Я пытаюсь заблокировать доступ к своему веб-сайту в зависимости от того, заходил ли посетитель на сайт через другой веб-сайт. Последний использует мой трафик, используя 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>
Проблема в том, что эта директива блокирует весь трафик, включая прямых посетителей сайта. Что я делаю не так?
Вам нужно избегать точек в URL-адресах, например:
SetEnvIf Referer "^http://sitetoblock\.tk/" noaccess=1
SetEnvIf Referer "^http://www\.sitetoblock\.tk/" noaccess=1
В вашей конфигурации состояние доступа по умолчанию - «Запретить», потому что у вас есть «Разрешить заказ, запретить». Измените порядок на «Запретить, разрешить», чтобы вы могли явно запретить доступ на основе проверки вашего реферера.