http请求中rewrite的变量
HTTP表头的变量
HTTP_USER_AGENT
HTTP_REFERER
HTTP_COOKIE
HTTP_FORWARDED
HTTP_HOST
HTTP_PROXY_CONNECTION
HTTP_ACCEPT
连接请求的变量
REMOTE_ADDR
REMOTE_HOST
REMOTE_PORT
REMOTE_USER
REMOTE_IDENT
REQUEST_METHOD
SCRIPT_FILENAME
PATH_INFO
QUERY_STRING
AUTH_TYPE
服务器内部变量
DOCUMENT_ROOT
SERVER_ADMIN
SERVER_NAME
SERVER_ADDR
SERVER_PORT
SERVER_PROTOCOL
SERVER_SOFTWARE
日期和时间变量
TIME_YEAR
TIME_MON
TIME_DAY
TIME_HOUR
TIME_MIN
TIME_SEC
TIME_WDAY
TIME
特别的变量
API_VERSION
THE_REQUEST
REQUEST_URI
REQUEST_FILENAME
IS_SUBREQ
HTTPS
注意:IS_SUBREQ
将包含文本“真正的”,如果目前正在处理的请求是一个子请求,否则“假”。模块需要解决其他文件或URIs,为了完成自己的任务,可能会产生子请求。
API_VERSION
这是在当前的httpd构建Apache的模块服务器和模块之间的内部接口(API),定义在include / ap_mmn.h的版本。该模块API版本对应版本的Apache使用(在发行版本的Apache1.3.14,例如,它是19990320:10),但主要是模块的作者感兴趣。
THE_REQUEST
完整HTTP请求行由浏览器发送到服务器(例如,“GET / index.html的HTTP/1.1”)。这不包括浏览器发送的任何额外的标头。这一数值已经没有非转义(解码),不像其他大多数以下变量。
REQUEST_URI
请求的URI的路径部分,如“/ index.html”的。这明显不包括查询字符串作为其自己的变量命名QUERY_STRING。
REQUEST_FILENAME
完整的本地文件系统路径的文件或脚本相匹配的要求,如果这已经由服务器决定的时间REQUEST_FILENAME被引用。否则,例如当用在虚拟主机的上下文中,请求地址相同的值。
HTTPS
如果连接使用SSL / TLS,或“关”,否则将包含文本“”。 (此变量可以被安全地使用,无论是否加载了mod_ssl)。
判断文件或目录是否存在:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-fRewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(cn|en)/(.*)$ index\.php\?c1=$1&c2=$2 [QSA,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /index\.php\?c1=$1 [QSA,L]
{REQUEST_FILENAME} :这个是请求的文件名
' -d '测试它是否存在,且是一个目录。
' -f '测试它是否存在,是一个普通的文件。
' -s '测试它是否存在,是一个普通文件大小大于零。
' -l '测试它是否存在,是一个符号链接。
' -x '测试它是否存在,并有可执行的权限。这些权限根据底层的操作系统。
可以前边加!,表示否定!
RewriteRule ^/(.*)/(.*)/(.*).html$ /$1-$2-$3.htm
如果访问/aaa/bbb/ccc.html就返回 /aaa-bbb-ccc.htm
也就是一个扩弧所对应第n个位置就是$n,()中的.*就是匹配所有内容
RewriteRule ^/iso/(.*) http://188.188.3.220/$1 [L,P]
如果访问/iso/所有 就跳转到http://188.188.3.220/下,后边内容和前边访问的URL的相同
判断主机名
RewriteCond %{REMOTE_HOST} =host1 [OR,NC] //OR表示AND,NC不区分大小写,NV选项会影响http头部的变化 RewriteCond %{REMOTE_HOST} =host2 [OR] //上一条,这一条和下一条都成立 RewriteCond %{REMOTE_HOST} =host3RewriteRule ...some special stuff for any of these hosts... //这儿可以写对以上条件成立的RwriteRule的任何规则
定义rewrite log文件
# Log to a file:
RewriteLog "/usr/local/var/apache/logs/rewrite.log"
APACHE2 REWRITE BASE
##############################################
迷途小运维学习REWRITE笔记
作者:john
转载请注明出处