apache中的httpd.conf中的RewriteCond规则
时间: 2024-03-04 12:48:18 浏览: 118
apache的rewrite规则使用说明
在httpd.conf中,可以使用RewriteCond规则来对请求进行条件判断,以便根据不同的情况进行不同的处理。下面是一个例子:
```
RewriteEngine On
RewriteCond %{REQUEST_URI} ^/articles/(.*).html$
RewriteCond %{QUERY_STRING} ^id=(\d+)$
RewriteRule ^.*$ /article/%1/%{QUERY_STRING}? [R=301,L]
```
这个规则的作用是将旧的URL(如/articles/123.html?id=456)重定向到新的URL(如/article/123/456),其中%{REQUEST_URI}和%{QUERY_STRING}是RewriteCond指令的变量,表示请求的URI和查询字符串。具体的规则解释如下:
1. RewriteEngine On:表示开启Rewrite引擎。
2. RewriteCond %{REQUEST_URI} ^/articles/(.*).html$:表示如果请求的URI以/articles/开头,并且以.html结尾,则继续进行下一步重写规则。其中(.*).html$表示匹配以.html结尾的任意字符,并将其保存为变量%1。
3. RewriteCond %{QUERY_STRING} ^id=(\d+)$:表示如果请求的查询字符串以id=开头,并且后面跟着一个或多个数字,则继续进行下一步重写规则。其中(\d+)表示匹配一个或多个数字,并将其保存为变量%2。
4. RewriteRule ^.*$ /article/%1/%{QUERY_STRING}? [R=301,L]:表示将请求重定向到/article/%1/%{QUERY_STRING},其中%1和%{QUERY_STRING}分别是之前保存的变量。这里的?表示去掉原来的查询字符串。最后的[R=301,L]表示返回301状态码,并停止后续的重写规则。
总的来说,RewriteCond规则可以根据请求的特定条件来控制URL的重定向或者其他处理。
阅读全文