apache2 rewrite几则例子

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

转载请注明出处


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值