Apache $服务器[';HTTP#u REFERER';]和RewriteCond%{HTTP#u REFERER}显示不同的数据
为什么它不工作 .htaccess:Apache $服务器[';HTTP#u REFERER';]和RewriteCond%{HTTP#u REFERER}显示不同的数据,apache,.htaccess,mod-rewrite,http-referer,Apache,.htaccess,Mod Rewrite,Http Referer,为什么它不工作 .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?i
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
这是因为您的RewriteCond
模式中有$
。它将比赛锚定到底。所以
^example222.ml$
将匹配精确的字符串example222.ml
,但此处的情况并非如此。尝试:
RewriteCond %{HTTP_REFERER} ^(www\.)?example111\.com [NC]
RewriteRule ^ – [F]
@user3572969这些指令也应该放在.htaccess文件的顶部附近,然后再进行其他重写。是的,我尝试了这个变体。还是不行。也许你有什么问题?@user3572969嗯,这很奇怪。
example111.com
不是你自己的域名吗?example111.com不是我的域名