一个RewriteCond应用到多个RewriteRule

默认情况下 RewriteCond 只应用到 其紧跟着的 RewriteRule。

手册里有个 RewriteCond backreferences :
http://httpd.apache.org/docs/current/mod/mod_rewrite.html#rewritecond
貌似可以实现一个RewriteCond应用到多个RewriteRule,不过看了一下不知道怎么用。

Ask Google大神找到了一个老外的解决方案:
http://my.galagzee.com/2009/02/11/mod_rewrite-one-rewritecond-to-many-rewriterules/

RewriteCond %{REQUEST_URI} !^/(pattern1|pattern2|pattern3)(/[0-9]+|/P[0-9]+|)[/]?$ [NC]
RewriteRule . – [S=3]
RewriteRule ^/([^/]*)[/]?$ /index.php/site_embeds/department/$1/X [L]
RewriteRule ^/([^/]*)/([0-9]+)[/]?$ /index.php/site_embeds/article/$2/$1 [L]
RewriteRule ^/([^/]*)/P([0-9]+)[/]?$ /index.php/site_embeds/department_archive/P$2/$1 [L]

RewriteRule 有个 S 参数,可以用来跳过其后续一定数量的规则。
然后对RewriteCond的条件取反,就可以实现了。


评论

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注