好的,我的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]
规则本身很有效。问题是,如果第一条规则适用,我希望它立即重定向,但似乎第二条规则被提升到顶部,因为它始终优先。我需要更改以便按顺序执行这些操作吗?
答案 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]
(即使用前导斜杠),否则它永远不会匹配任何东西。