mod-rewrite规则无序执行

时间:2013-06-04 21:03:45

标签: mod-rewrite

好的,我的vhost块中有两个单独的mod重写规则。如果客户通过联盟网址(例如example.com/1234.html)进入,则第一条规则将客户重定向到非现场,第二条规则强制网址始终包含www点,例如www.example.com。

# Affiliate Links
RewriteRule ^([0-9]+)\.html$ http://affiliates.example.com/log.php?id=$1 [R=302,L]

# Ensure we are always on www dot
RewriteCond %{HTTP_HOST} ^example\.loc [NC]
RewriteRule (.*) http://www.example.com$1 [R=301,L]

规则本身很有效。问题是,如果第一条规则适用,我希望它立即重定向,但似乎第二条规则被提升到顶部,因为它始终优先。我需要更改以便按顺序执行这些操作吗?

1 个答案:

答案 0 :(得分:0)

你已经声明这是在vhost块中。在该上下文中(与例如.htaccess文件相对),URL始终以'/'开头

因此

 RewriteRule ^([0-9]+)\.html$ http://affiliates.example.com/log.php?id=$1 [R=302,L]

应该是

 RewriteRule ^/([0-9]+)\.html$ http://affiliates.example.com/log.php?id=$1 [R=302,L]

(即使用前导斜杠),否则它永远不会匹配任何东西。