SetEnvIfNoCase Referer - 仅针对特定单词

时间:2016-03-15 16:35:31

标签: php .htaccess

有几个网址链接到我的网站。我想拒绝访问它们。

所有这些网站在网址中都有一个唯一且通用的关键字:/ roger23 /

示例网址为:

example.net/roger23/studie-ee.html
second-domain.org/roger23/somt-ohter-file.php
yetanotherone.eu/roger23/hello-world

因此,所有这些网址中的common关键字是:/ roger23 /

我想使用.htaccess拒绝访问此类网址。这是我尝试过的,但我需要确保这是正确的方法,它只包含包含“/ roger23 /”的链接,而不包含任何其他内容(以防止合法网站链接到该网站)。

所以在htaccess中我尝试了这个:

SetEnvIfNoCase Referer "/roger23/" spam=yes
Order allow,deny
Allow from all
Deny from env=spam

这是正确的方法吗?它似乎工作,但我不想排除任何其他不包含'/ roger23 /'一词的合法链接。

例如,应该允许这些:

some-things.net/roger23
some-others2.com/roger23.html

我很困惑,如果那里应该有引号,或者也许应该有*或^ ..

1 个答案:

答案 0 :(得分:1)

您可以尝试使用此类模式限制使用/roger23/访问网址:

SetEnvIfNoCase Referer "^(.*)/roger23/(.*)" spam=yes
Order allow,deny
Allow from all
Deny from env=spam

限制访问的同一问题的另一种解决方案:

# Block visits from /roger23/
RewriteEngine on 
RewriteCond %{HTTP_REFERER} ^(.*)/roger23/(.*)$ [NC]
ReRewriteRule .* - [F,L]