Apache HTTP Server(十二)--mod_rewrite模块

1201阅读 0评论2012-06-08 yourtommy
分类:系统运维

mod_rewrite提供了一种操作URL的方式,它用于处理复杂的任务。它使用Perl兼容的正则表达式。对于简单的任务,应该使用mod_alias。

RewriteRule由空格分隔的三个参数组成:

1、pattern:应该被规则影响的URL;

2、Substitution:用于替换匹配的部分;

3、[flags]:影响重写请求的选项。


例如:

RewriteRule ^/games /usr/local/games/web

RewriteRule ^/product/view$ [R]

RewriteRule ^/product/(.*)/view$ /var/web/productdb/$1


具体的flag参考:。


RewriteCond可以用来限制要传给后面的请求类型。第一个参数是描述请求的一个特性的变量;第二个参数是匹配第一个参数的正则表达式;第三个可选参数是一列flags来修改匹配如何取值。


例如:

RewriteCond %{REMOTE_ADDR} ^10\.2\.
RewriteRule (.*)

RewriteCond %{QUERY_STRING} hack
RewriteCond %{HTTP_COOKIE} !go
RewriteRule . - [F]


RewriteCond %{HTTP_HOST} (.*)
RewriteRule ^/(.*) /sites/%1/$1


RewriteMap指令提供了调用外部函数的一种方式。具体参考。


Rewrite一般推荐在片段外面配置,也可以在里。在里或.htaccess文件里配置会增加额外的复杂性的开销。

上一篇:Apache HTTP Server(十一)--SSL/TLS
下一篇:Apache HTTP Server(十三)--虚拟主机