我刚刚看到这个:http://www.askapache.com/htaccess/mod_rewrite-tips-and-tricks.html - >检查"删除查询字符串".它声明:"在许多网站上,页面将显示为page.html和page.html?任何东西,这会损害您的SEO与重复的内容.修复此问题的简单方法是重定向包含查询的外部请求字符串到没有query_string的同一个uri."
我的问题是......你如何测试它?我添加了以下代码:
RewriteCond %{THE_REQUEST} ^GET\ /.*\;.*\ HTTP/ RewriteCond %{QUERY_STRING} !^$ RewriteRule .* http://www.mysite.com%{REQUEST_URI}? [R=301,L] RewriteCond %{THE_REQUEST} ^GET\ /.*\;.*\ HTTPS/ RewriteCond %{QUERY_STRING} !^$ RewriteRule .* https://www.mysite.com%{REQUEST_URI}? [R=301,L]
但是,如果我访问www.mysite.com/?anything=bla,它仍会在地址栏中显示此链接?我是否误解了,或者这个代码是不是假设在没有查询字符串的情况下重定向到mysite.com?
另外,我是通过为HTTP制作一个而对HTTPS制作一个吗?
更好的方法 - 由主要搜索引擎支持 - 是让每个页面使用指定其规范URL .这篇谷歌文章详细介绍了这篇文章.
我会犹豫是否在Web服务器中使用重定向,因为那些查询参数应该出于某种原因(如果不是这样,那么修复页面以摆脱它们会更好).不确定为什么浏览器中的地址没有改变; 我建议使用Firebug或Fiddler等工具来验证301实际上是否已返回到您的浏览器.