我希望来自urlnumberone.com和urlnumbertwo.com的任何流量都会重定向到我网站上的几个特定网页。
RewriteEngine on
RewriteCond %{HTTP_REFERER} ^http://(www.\.)?urlnumberone\.com
RewriteRule ^$ /thepath/tomypage/goeshere/ [L]
RewriteEngine on
RewriteCond %{HTTP_REFERER} ^http://(www.\.)?urlnumbertwo\.com
RewriteRule ^$ /thesecond/pathgoeshere/ [L]
现在,这两个网址都只是将用户带到我网站的主页上,而不是转到我想要的网页。我究竟做错了什么?如果它很重要,该网站是一个WordPress网站,WordPress规则在这些重定向下,而不是在代码上方。
答案 0 :(得分:1)
我认为有两个问题。 RewriteCond
行中有一个额外的点,因此括号中的部分当前表示" www(任意字符)(literal-dot)",这将阻止匹配www版本的您需要匹配的域名 - 除非您尝试匹配www6.urlnumberone.com
和www3.urlnumberone.com
等域名。
所以,我会替换:
RewriteCond %{HTTP_REFERER} ^http://(www.\.)?urlnumberone\.com
使用:
RewriteCond %{HTTP_REFERER} ^http://(www\.)?urlnumberone\.com
接下来,对于RewriteRule
行,我会将^$
(替换空字符串)更改为.*
(替换整个路径),并使用302或301重定向。由于WordPress重写了不是现有文件或目录的每个URL,因此很容易错误地进行重定向循环,因此使用301或302应该有助于防止这种情况。所以我会用:
RewriteRule .* /thepath/tomypage/goeshere/ [R=302,L]
可能有mod_rewrite向导有更好的答案,但这种方法在我的经验中运作良好。