我刚刚遇到过这个问题:http://www.askapache.com/htaccess/mod_rewrite-tips-and-tricks.html - >检查“删除查询字符串”。它指出: “在很多网站上,页面都会显示为page.html和page.html?任何东西,这会影响你的搜索引擎优化内容重复内容。修复此问题的一个简单方法是将包含查询字符串的外部请求重定向到相同的uri没有query_string。“
我的问题是......你如何测试它?我添加了以下代码:
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创建一个?
答案 0 :(得分:5)
主要搜索引擎支持的更好方法是让每个页面使用<link rel="canonical">
指定其规范网址。 This Google article详细介绍。
我会犹豫是否在网络服务器中使用重定向,因为那些查询参数应该出于某种原因(如果不是,那么最好修复你的页面来摆脱它们) 。不确定为什么浏览器中的地址没有改变;我建议使用Firebug或Fiddler等工具来验证301实际上是否已返回到您的浏览器。