如何使用htaccess从网址中删除GET参数?

时间:2016-04-25 18:16:48

标签: .htaccess url-rewriting get

除了在一个页面上,我的网站不使用任何GET参数。尽管如此,我可以看到谷歌设法使用GET参数索引我的一些页面。这对于SEO(重复内容)来说并不是很好......

因此,我尝试编辑我的.htaccess,在没有GET参数的情况下,使用GET参数在所有网址之间进行301重定向(除了一个网址)。一些例子:

  • example.com/?foo=42 => example.com /
  • example.com/about?bar=42 => example.com/about
  • example.com/r.php?foobar=42 => url r.php应该保留GET参数

到目前为止,我尝试删除所有GET参数,但它无法正常工作。

RewriteEngine On 

RewriteRule ^(.*)\?(.*)$ http://www.example.com/$1 [L,NC,R=301]

知道如何解决这个问题吗?

1 个答案:

答案 0 :(得分:1)

您无法使用RewriteRule匹配查询字符串。

您可以使用此通用规则删除除DOT

的请求之外的所有查询字符串
RewriteEngine On

RewriteCond %{QUERY_STRING} .
RewriteRule ^([^.]*)$ /$1? [L,NE,R=301]