我正在尝试创建一个 .htaccess mod_rewrite,如果当前引用者不是我自己的域,它的行为会有所不同。例如,假设我拥有 example.com(即 www.example.com、 http://example.com 等)。当有人访问 example.com(或 beta.example.com 等子域)时,我想忽略此 .htaccess 规则。所以我猜正则表达式基本上只会在其中查找 example.com 并忽略它们。
但是,如果像 otherdomain.com 这样的域(假设通过 cname 或 A 记录指向 example.com)访问我的网站,我想将它们重定向到某个地方。到目前为止,我认为已经接近但不起作用。
我对这些规则的主要困惑是 RewriteRule 之后的部分(在本例中为 ^$)。我在谷歌搜索中看到了一些不同的东西,但我不确定其中的差异。例如,我也只看到过 ^、(.*)$ 等。
RewriteCond %{HTTP_REFERER} !^http://([^.]+\.)*(example)\.com
RewriteRule ^$ redirectfile.php [L]
我也一直在搞乱
RewriteCond %{HTTP_REFERER} ^http://(.+\.)*\.com
RewriteCond %1 !^(example)\.$
RewriteRule ^$ redirectfile.php [R=302,L]
最佳答案
尝试
RewriteCond %{HTTP_REFERER} !^http://([^.]+\.)*example\.com
RewriteRule ^ redirectfile.php [L]
您有 ^$
,它仅与主页匹配。
我将其更改为 ^
,它将匹配每个请求,假设您想要匹配每个请求。
(.*)$
也会匹配每个请求,但也会捕获匹配,以便您在目标中将其重用为 $1
关于regex - .htaccess 确定引荐来源网址是否不是当前域,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9278410/