使用/其他规则剥离特定查询字符串

时间:2013-01-22 03:25:34

标签: .htaccess mod-rewrite url-rewriting

我似乎无法应用我发现的用于剥离查询字符串的任何示例。

我们在www.example.com/blog/上安装了一个WordPress,出于某种原因,即使我们的类别设置为相当低(IE www.example.com/categories/cat-name/),甚至虽然我无法在报告的引荐来源页面上找到任何链接,但Google网站管理员工具仍在尝试并且无法索引www.example.com/blog/?cat=3,?cat = 25,?cat = 37等。事实上,现在它显示了超过50个这样的URL到#81类,但是我们只有11个类别。

正确的类别网址已编入索引,我想删除所有这些查询字符串,然后重定向到www.example.com/blog/,但这些示例似乎都无法正常工作...这是我最新的尝试(在网站空间根目录中... /blog/.htaccess中的尝试也没有结果):

RewriteEngine On

RewriteCond %{HTTP_HOST} ^example\.com [OR]
RewriteCond %{REQUEST_URI} /index\.html$
RewriteRule (.*?)(index\.html)?$ http://www.example.com/$1 [NE,R=301,L]

RewriteCond %{REQUEST_URI} \.jpg.+$
RewriteRule ^(.*\.jpg).*$ http://www.example.com/$1 [NE,R=301,L]

RewriteCond %{QUERY_STRING} ^cat=([0-9]*)$
RewriteRule ^(.*)$ http://www.example.com/blog/ [R=301,L]

提前致谢。请注意,第一组规则强制执行“www。”,而没有“index.html”,第二组删除“.jpg”之后的所有内容,因为我们有一个奇怪的问题,谷歌试图索引以恶意方式结束的网址,像“.jpg%20>”,好像它以某种方式错过了锚源的关闭引号,但我从来没有在网站上找到这样的错误...引用者始终是一个300错误的页面。

1 个答案:

答案 0 :(得分:1)

如果您想完全剥离查询字符串,请使用?结束替换字符串。

来自Apache Rewrite docs

  

默认情况下,查询字符串不会更改。但是,您可以在包含查询字符串部分的替换字符串中创建URL。只需在替换字符串中使用问号,即表示应将以下文本重新注入查询字符串。如果要删除现有查询字符串,请仅使用问号结束替换字符串。要组合新旧查询字符串,请使用[QSA]标志。