2

好的,所以我的 vhost 块中有两个单独的 mod-rewrite 规则。如果客户通过 example.com/1234.html 之类的附属 URL 进入,则第一个规则将客户重定向到场外,第二个规则强制 URL 始终包含 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]

规则本身很有效。问题是,如果第一个规则适用,我希望它立即重定向,但是似乎第二个规则被提升到顶部,因为它总是优先。我需要更改哪些内容才能按顺序执行?

4

1 回答 1

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]

(即,带有前导斜杠),否则它将永远不会匹配任何内容。

于 2013-12-19T15:37:17.380 回答