RewriteCond: есть ли обходной путь, чтобы HTTP_REFERER соответствовал HTTP_HOST? - PullRequest
0 голосов
/ 11 мая 2011

1) Мне нужно проверить, ссылаются ли на соединения мой сайт или кто-то еще. 2) Я НЕ могу просто ввести HTTP_HOST вручную, поскольку файл .htaccess предназначен для обработки в Subversion и используется в разных средах разработки с разными значениями HTTP_HOST

Таким образом, цель состоит в том, чтобы найти обходной путь, позволяющий сделать это условие прозрачным, независимо от среды, и обеспечить легкую обработку htaccess svn без необходимости ручного исправления.

Спасибо!

1 Ответ

1 голос
/ 11 мая 2011

С Apache 2 вы можете сделать это:

RewriteCond %{HTTP_REFERER} ^$ [OR]
RewriteCond %{HTTP_REFERER} ^[^:/?#]+://([^/?#]+)  # get authority
RewriteCond %1 ^(?:(?:[A-Za-z0-9-._~!$&'()*+,;=:]|%[0-9A-Fa-f]{2})*@)?((?:[A-Za-z0-9-._~!$&'()*+,;=]|%[0-9A-Fa-f]{2})*)(?::\d+)?$  # get host name
RewriteCond %1/%{HTTP_HOST} !^([^/]+)/\1$  # compare to HTTP_HOST
RewriteRule ^ …

Обратите внимание, что HTTP_HOST также может быть пустым в случае запроса до HTTP / 1.1.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...