0

使用.htaccess如何301将包含查询字符串的所有URL重定向到URL的“规范”版本?重定向包含查询字符串的所有URL

实施例:

www.example.com/?bla_bla应该重定向到www.example.com/

www.example.com/test/?bla_bla_evil_querystring应该重定向到www.example.com/测试/

www.example.com/test.html?bla_bla应该重定向到www.example.com/test.html

我要寻找一个站点范围内的解决方案,任何URL重定向与查询字符串的同样的URL没有querystrings。

谢谢!

+0

如果您的网址有任何有用的查询字符串,该怎么办? – anubhava

回答

1

最简单的方法是使用mod_rewrite。

RewriteEngine on 

RewriteCond %{QUERY_STRING} . 
RewriteRule^%{REQUEST_URI} [R,QSD,L] 

此规则如果查询字符串是至少1个字符长的匹配。 QSD标志将丢弃查询字符串。 R标志将导致重定向。在测试此规则正常工作之后,请将R标志替换为R=301以使重定向永久。

QSD标志尚未实现的版本上,可以改为使用下面的代码。请注意,这会在您的网址后面留下?,但我无能为力。考虑将您的Apache升级到最新版本。

RewriteRule^%{REQUEST_URI}? [R,L] 
+0

使用此功能,搜索引擎会查看301重定向吗?忘了说吧:谢谢! :) – Malasorte

+0

其实,我忘了添加重定向完全。我有点编辑了我的答案。 – Sumurai8

+0

再次感谢!今天会做一些测试,我会回来接受一个公认的答案。 – Malasorte

相关问题