Задача: Пропускать на сайт пользователей, если они пришли с определенных сайтов!
Затестил вариант:
RewriteCond %{HTTP_REFERER} "!google" [NC]
Создал файл, указал там список сайтов в виде:
google.com -
example.com -
Прописал в конфиге:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteMap allowreferer "txt:/home/allow_referer.txt"
RewriteCond "%{HTTP_REFERER}" !=""
RewriteCond "${allowreferer:%{HTTP_REFERER}|NOT-FOUND}" "=NOT-FOUND"
RewriteRule ^ - [F,L]
</IfModule>
И вижу, что нифига не работает! Если прописать в файл allow_referer.txt точные совпадения - то все работает как и ожидалось. А если просто домен - выдает 403! Как быть? Неужели про регулярки забыли в параметре MapName ?
Сча сделал так:
RewriteCond %{HTTP_REFERER} "(http|https):\/\/([a-z0-9\-\.]+)\.([a-z]{2,4}+)(|\/)(.*)"
RewriteCond "${allowreferer:%2.%3|NOT-FOUND}" "=NOT-FOUND"
Вроде работает, но не очень нравится такой вариант! Вернее сказать совсем не нравится!
На борту:
Server version: Apache/2.4.27 (Unix)
Server built: Jul 25 2017 12:29:36
Прошу помощи!
P.S. Про nginx знаю. Пожалуйста, не ссылайтесь с репликой перехода туда!