我试图根据访问者是否通过其他网站访问过我的网站来阻止访问我的网站。后者一直在使用 iframe 通过他的网站显示内容,从而掩盖我网站的身份,消耗我的流量。
我有mod_env_if在 apache2 中激活。
ErrorDocument 403 /error403.html
SetEnv noaccess=0
SetEnvIf Referer "^http://sitetoblock\.tk/" noaccess=1
SetEnvIf Referer "^http://www\.sitetoblock\.tk/" noaccess=1
<FilesMatch "\.(gif|png|jpe?g|php|html)$">
Order Allow,Deny
Deny from env=noaccess
</FilesMatch>
问题在于,该指令阻止了所有流量,包括直接访问网站的访问者。我做错了什么?
答案1
在您的配置中,默认访问状态为“拒绝”,因为您有“顺序允许,拒绝”。将顺序更改为“拒绝,允许”,以便您可以根据您的 referer 检查明确拒绝访问。
答案2
您需要去掉 URL 中的点,例如:
SetEnvIf Referer "^http://sitetoblock\.tk/" noaccess=1
SetEnvIf Referer "^http://www\.sitetoblock\.tk/" noaccess=1