$_SERVER['HTTP_REFERER'] и RewriteCond %{HTTP_REFERER} показывают разные данные

Почему RewriteCond не работает?

.htaccess:

RewriteEngine on
RewriteBase /

RewriteCond %{HTTP_HOST} !^example\.com
RewriteRule ^(.*)$ http://example.com/$1 [R=301,L]

RewriteRule ^page([0-9]+).html$ index.php?page=$1

RewriteRule ^p([0-9]+)-([a-zA-Z0-9_]+).html$ index.php?id_post=$1&title_post=$2
RewriteRule ^([a-zA-Z0-9_\-]+)/page([0-9]+).html$ index.php?mpoint=$1&page=$2 [L]
RewriteRule ^([a-zA-Z0-9_\-]+).html$ index.php?mpoint=$1
RewriteRule ^.*.html$ index.php?mpoint=$1


RewriteCond %{HTTP_REFERER} ^www.example111.com$ [NC,OR]
RewriteCond %{HTTP_REFERER} ^example222.ml$ 
RewriteRule .* – [F]

index.php

echo $_SERVER['HTTP_REFERER'];

результат: http://www.example111.com/xxxx/yyy.html

1 ответ

Это из-за $ в вашем RewriteCond шаблон. Это закрепляет матч до конца. Следовательно

^example222.ml$

будет соответствовать точной строке example222.ml что здесь не так. Пытаться:

RewriteCond %{HTTP_REFERER} ^(www\.)?example111\.com [NC]
RewriteRule ^ – [F]
Другие вопросы по тегам