Для нормальной работы сайта необходимо разрешить JavaScript, включая скрипты с доменов googlesyndication.com и doubleclick.net для отображения системы поиска по сайту и прочих сервисов Google.

Сравнение серверных переменных Apache в условиях RewriteCond

mod_rewrite-logoМногие безуспешно пытались сравнивать серверные переменные Apache из TestString в правой части условия CondPattern директивы RewriteCond, а некоторые упорные, несмотря на постоянные "фэйлы", продолжают пытаться это делать и по сей день.

Apache 2.0-2.2 и переменные в условиях RewriteCond

Проблема в том, что CondPattern не расшаривает переменные %{VAR} доступные в TestString, а также $N или %N обратные ссылки на группы из CondPattern предыдущих RewriteCond - ну, не предусмотрено документацией и всё тут!

CondPattern же является perl-совместимым регулярным выражением с небольшим дополнением, а потому на примере проверки "реферера" следующие условия работать не будут:

RewriteCond %{HTTP_REFERER} !^https?://%{HTTP_HOST}/*
RewriteRule "^/images" "-" [F]
 
RewriteCond %{HTTP_HOST} ^(.*)$
RewriteCond %{HTTP_REFERER} !^https?://%1/*
RewriteRule "^/images" "-" [F]

Делаем ход костылём

В строку TestString одновременно заряжаем значение переменных %{HTTP_HOST} и
%{HTTP_REFERER} разделив их условным разделителем, "@@" в нашем случае (может быть и "#" или просто пробел), а в CondPattern сравниваем эту строку целиком предварительно сгруппировав ([^@]*) все символы расположенные до разделителя - там у нас значение %{HTTP_HOST}.

Далее в шаблоне условий через обратную ссылку на группу с индексом №1 ("\1") подставляем содержащееся там значение %{HTTP_HOST}.


RewriteCond %{HTTP_HOST}@@%{HTTP_REFERER} !^([^@]*)@@https?://\1/.*
RewriteRule "^/images" "-" [F]

Apache 2.4 и переменные в условиях RewriteCond

В Apache 2.4 и старше появился свой движок для обработки регулярных выражений, и чтобы им воспользоваться нужно в TestString указать специальное значение в виде ключевого слова "expr":

RewriteCond expr "! %{HTTP_REFERER} -strmatch '*://%{HTTP_HOST}/*'"
RewriteRule "^/images" "-" [F]

Рекомендуемый контент



Добавить комментарий


Защитный код
Обновить

Рейтинг@Mail.ru 6 megabytes