任何人都可以告诉我为什么以下内容明显改变了浏览器中的URL,而不是默默地重定向?重定向有效,但可见。
示例网址 http://domain.com/_test/sportswire/uk/football/huddersfield
... visibily重定向,显示查询字符串参数。
RewriteEngine on
RewriteBase /_test/sportswire
#favour naked domain over www
RewriteCond %{HTTP_HOST} ^www\.(.+) [NC]
RewriteRule ^(.*) http://%1/$1 [R=301,NE,L]
#disallow trailing slash
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)/$ /$1 [L,R=301]
###THIS RULE### channel pages - territory/sport/channel/[res type?]
RewriteRule ^(\w+)\/(\w+)\/(\w+)(?:\/(\w+))?$ channel.php?territory=$1&sport=$2&team=$3&res_type=$4 [L,NC,R=301]
#channel pages - with item (if from external referrer) - territory/sport/channel/res_type/"item"/item_id/pretty
RewriteRule ^(\w+)\/(\w+)\/(\w+)\/(\w+)\/story\/\w{11}\/[^\/]+$ channel.php?territory=$1&sport=$2&team=$3&res_type=$4&item=$5 [L,NC,R=301]
我尝试/阅读的内容:
我相信地球上没有任何东西像mod-rewrite一样令人困惑。
答案 0 :(得分:1)
尝试完全删除[R]
标志,以便服务器不会通知浏览器更改。
htaccess
更改会立即生效,因此您无需重新启动服务器。但是,由于您之前尝试过R=301
,因此您的浏览器可能会记得直接使用查询字符串访问该网址,甚至不会向服务器询问您尝试重定向的网址。要查看我推荐的更改效果,请以隐身或隐私浏览模式启动新的浏览器实例并测试新规则。
旁注:为什么要逃离路径中的所有/
?我觉得你不需要。
答案 1 :(得分:1)
[R]标志不应该在那里。如果可能的话,尝试重新启动Apache,我注意到它有时会有所帮助。 尝试使用其他浏览器或其他网址,他们可以缓存重定向。