$_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]