使用.htaccess我正在努力构建正确的正则表达式来重定向基于http_referer所有子域除了两个。
让我说我有
one.refered.com
two.refered.com
我不想重定向example.refered.com
或[any other subdomain but one or two].refered.com
。
要获得它们,我可以使用
RewriteCond %{http_referer} ^http://([^.]+.)*(refered).com
RewriteRule ^$ yoursite.html [R=302,L]
但我正在与排除部分斗争。
答案 0 :(得分:1)
尝试此规则:
RewriteCond %{HTTP_REFERER} ^http://(.+\.)*refered\.com
RewriteCond %1 !^(one|two)\.$
RewriteRule ^$ yoursite.html [R=302,L]
one.
或two.
如果满足两个条件(条件之间的默认“关系”是逻辑 AND ),那么我们继续重写/重定向。
测试数据:
http://meow.refered.com/hello.php = redirect
http://one.refered.com/hello.php = ignore
http://one.two.refered.com/hello.php = redirect
答案 1 :(得分:0)
这是非常棘手的,我不建议这样做,除非你必须把它喂给另一个工具(显然你这样做)。
http://(?!one|two)(\w+\.)+(?<!one|two)referred\.com
这说:
找到“http://”,只要没有“一个”或“两个”
找到任意数量的子域名(\ w。)+
然后找到“referenced.com”,只要它没有“一个”或两个“
http://one.referred.com * no match
http://two.referred.com * no match
http://blah.referred.com * matches
http://blah.one.blah.referred.com * matches
http://two.blah.referred.com * no match