简介Rewirte的主要功能是实现URL重定向,其正则表达式基于Perl语言。它可以基于服务器级别(httpd.conf)和目录级别(.htaccess)。如果要使用重写模块,必须先安装或加载重写模块。基于服务器级别(httpd.conf),有两种方法,一种是直接使用RewriteEngineon打开全局httpd.conf下的rewrite功能;另一种是在本地使用RewriteEngine开启rewrite功能,下面将举例说明。需要注意的是,rewrite功能必须在每个virtualhost中开启RewriteEngineon。否则,如果virtualhost中没有RewriteEngineon,那么里面的规则是不会生效的。基于目录级别(.htaccess),需要注意的是必须打开该目录的FollowSymLinks属性,并且必须在.htaccess中声明RewriteEngineon。配置方法1、修改Apache主配置文件,删除LoadModulerewrite_modulemodules/mod_rewrite.so#2。如果要通过.htaccess设置Rewrite规则,将网站目录配置部分的“AllowOverride”改为“All”即可。不同虚拟机需要单独配置3.配置项分析RewriteEngineOn|Off是否开启Rewire功能Rewrite功能不会被继承,多个虚拟机需要分别设置ReWriteRule规则来设置Rewrite重写规则,一般写在.htaccess中并放在根目录下;.htaccess无需重启Apache;原子组引用$1,$2...[L]是一个休息,每个L是一个段落[NC]不区分大小写ServerAdminExample.comDocumentRoot/var/www/htmlServerName192.168.1.22ErrorLog日志/error_logCustomLog日志/access_logcommonRewriteEngineOnRewriteRule(.*)\.py$http://192.168.1.22/$1.php#rewriteruleRewriteCondRewrite重写条件,不满足条件则放弃RewriteRule规则匹配,除非在设置RewriteCond条件时加上[OR]标记使用%{}输出Apache变量RewriteCond%{REQUEST_FILENAME}。*\.(jpg|jpeg|gif|png)[NC]#如果请求是图片;ApacheRewrite服务器变量介绍第1部分:HTTP标头参数名称:HTTP_USER_AGENT示例参考值:Mozilla/5.0(Windows;U;WindowsNT5.1;en-中国;rv:1.9.0.8)Gecko/2009032609Firefox/3.0.8说明:相当于PHP中的服务器参数:$_SERVER["HTTP_USER_AGENT"]参数名:HTTP_REFERER示例参考值:http://www.test.cn/test.php解释:相当于PHP中的服务器参数:$_SERVER["HTTP_REFERER"]参数名称:HTTP_COOKIE示例参考值:ZDEDebuggerPresent=php,phtml,php3解释:相当于PHP中的服务器参数:$_SERVER["HTTP_COOKIE"]参数名称:HTTP_FORWARDED示例参考值:如果使用代理服务器,则为代理服务器的IP地址。在本地环境中测试值并不容易。说明:相当于PHP中的服务器参数:$_SERVER["HTTP_FORWARDED"]参数名称:HTTP_HOST示例参考值:www.test.com说明:相当于PHP中的服务器参数:$_SERVER["HTTP_HOST"]参数名称:HTTP_PROXY_CONNECTION示例参考值:网络连接代理信息。与HTTP_FORWARDED参数相同。在本地测试值并不容易。注意:PHP似乎不提供这样的服务器信息值。如果是,可能等价于:$_SERVER["HTTP_PROXY_CONNECTION"]参数名:HTTP_ACCEPT示例参考值:text/html,application/xhtml+xml,application/xml;q=0.9,/;q=0.8说明:它相当于PHP中的server参数:$_SERVER["HTTP_ACCEPT"]第二部分:serverinternals部分参数名称:DOCUMENT_ROOT示例参考值:C:/webRoot/t说明:相当于PHP中的server参数:$_SERVER["DOCUMENT_ROOT"]参数名:SERVER_ADMIN示例参考值:yoemailaddress@gmail.com说明:PHP相当服务器参数:$_SERVER["SERVER_ADMIN"]参数名名称:SERVER_NAME示例参考值:www.test.com说明:相当于PHP中的server参数:$_SERVER["SERVER_NAME"]参数名:SERVER_ADDR示例参考值:127.0.0.1说明:相当于PHP中的server参数:$_SERVER["SERVER_ADDR"]参数名:SERVER_PORT示例参考值:80说明:相当于PHP中的服务器参数:$_SERVER["SERVER_PORT"]参数名:SERVER_PROTOCOL示例参考值:HTTP/1.1说明:相当于PHP中的服务器参数:$_SERVER["SERVER_PROTOCOL"]参数名称:SERVER_SOFTWARE示例参考值:Apache/2.2.11(Win32)PHP/5.2.9-1说明:相当于PHP中的服务器参数:$_SERVER["SERVER_SOFTWARE"]第三部分:connection&request部分参数参数名称:REMOTE_ADDR示例参考值:127.0.0.1浏览当前页面的用户IP地址说明:相当于PHP中的服务器参数:$_SERVER["REMOTE_ADDR"]参数名称:REMOTE_HOST示例参考值:127.0.0.1浏览当前页面的用户的主机名。反向域名解析是根据用户的REMOTE_ADDR说明:相当于PHP中的服务器参数:$_SERVER["REMOTE_HOST"]参数名称:REMOTE_PORT示例参考值:2574(可变值)用户连接服务器使用的端口说明:相当于PHP中的服务器参数:$_SERVER["REMOTE_PORT"]参数名称:REMOTE_USER示例参考值:空说明:PHP好像没有提供相关的$_SERVER值。参数名称:REMOTE_IDENT示例参考值:空说明:PHP似乎没有提供相关的$_SERVER值。参数名称:REQUEST_METHOD示例参考值:GET说明:相当于PHP中的服务器参数:$_SERVER["REQUEST_METHOD"]参数名称:SCRIPT_FILENAME示例参考值:C:/webRoot/t/share77.html说明:相当于PHP中的服务器参数PHP:$_SERVER["SCRIPT_FILENAME"]参数名:PATH_INFO示例参考值:空说明:相当于PHP中的服务器参数:$_REQUEST["PATH_INFO"]参数名:QUERY_STRING示例参考值:a=b&c=d&e=f说明:相当于PHP中的服务器参数:$_SERVER["QUERY_STRING"]参数名称:AUTH_TYPE示例参考值:当PHP以Apache模块模式运行时为空接下来,使用的是HTTP认证功能,这是认证类型。说明:等同于PHP中的服务器参数:$_SERVER["AUTH_TYPE"]第四部分:日期和时间部分参数参数名称:TIME_YEAR示例参考值:2009说明:服务器获取当前年份值参数名称:TIME_MON示例参考值:04说明:服务器获取当前月份值参数名称:TIME_DAY示例参考值:22说明:服务器获取当前日期值参数名称:TIME_HOUR示例参考值:16说明:服务器获取当前时间的小时参数名称:TIME_MIN示例参考值:26说明:服务器获取当前时间的分钟参数名称:TIME_SEC示例参考值:34说明:服务器获取当前时间的秒数星期几,星期日到星期六,数字从0开始-6参数名:TIME示例参考值:20090422162634说明:服务器获取当前时间,格式为:年月日时分秒第五部分:specials参数名:API_VERSION示例参考值:20051115:21说明:apache的API版本信息。参数名称:THE_REQUEST示例参考值:GET/share77.htmlHTTP/1.1说明:浏览器向服务器发送的请求值。不包括其他头信息。参数名称:REQUEST_URI示例参考值:/share77.html说明:浏览器请求的资源信息。参数名称:REQUEST_FILENAME示例参考值:C:/webRoot/t/share77.html说明:请求的资源在磁盘的物理地址。参数名称:IS_SUBREQ示例参考值:false说明:如果是子请求,则显示为true,否则为false。参数名称:HTTPS示例参考值:off说明:如果连接使用SSL/TLS模式,则该值为on,否则为off,该参数更安全,即使没有加载mod_ssl模块。