apache2 rewrite几则例子

来源:互联网 发布:unity3d往复运动 编辑:程序博客网 时间:2024/05/01 10:23

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} !-f
RewriteCond %{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}  =host3
RewriteRule ...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

转载请注明出处


原创粉丝点击