重定向所有包含查询字符串的 URL
Redirect all URLs containing querystrings
使用 .htaccess 如何将所有包含查询字符串的 URL 重定向到 URL 的 "canonical" 版本?
示例:
www.example.com/?bla_bla 应该重定向到 www.example.com/
www.example.com/test/?bla_bla_evil_querystring 应该重定向到 www.example.com/test/
www.example.com/test.html?bla_bla 应该重定向到 www.example.com/test.html
我正在寻找一个站点范围的解决方案,以将任何带有查询字符串的 URL 重定向到没有查询字符串的相同 URL。
谢谢!
最简单的方法是使用 mod_rewrite。
RewriteEngine on
RewriteCond %{QUERY_STRING} .
RewriteRule ^ %{REQUEST_URI} [R,QSD,L]
如果查询字符串的长度至少为 1 个字符,则此规则匹配。 QSD
标志将丢弃查询字符串。 R
标志将导致重定向。在您测试此规则按预期工作后,将 R
标志替换为 R=301
以使重定向永久化。
在尚未实现 QSD
标志的版本中,您可以使用以下代码代替。请注意,这会在您的 url 后面留下尾随 ?
,但我对此无能为力。考虑将您的 Apache 升级到最新版本。
RewriteRule ^ %{REQUEST_URI}? [R,L]
使用 .htaccess 如何将所有包含查询字符串的 URL 重定向到 URL 的 "canonical" 版本?
示例:
www.example.com/?bla_bla 应该重定向到 www.example.com/
www.example.com/test/?bla_bla_evil_querystring 应该重定向到 www.example.com/test/
www.example.com/test.html?bla_bla 应该重定向到 www.example.com/test.html
我正在寻找一个站点范围的解决方案,以将任何带有查询字符串的 URL 重定向到没有查询字符串的相同 URL。
谢谢!
最简单的方法是使用 mod_rewrite。
RewriteEngine on
RewriteCond %{QUERY_STRING} .
RewriteRule ^ %{REQUEST_URI} [R,QSD,L]
如果查询字符串的长度至少为 1 个字符,则此规则匹配。 QSD
标志将丢弃查询字符串。 R
标志将导致重定向。在您测试此规则按预期工作后,将 R
标志替换为 R=301
以使重定向永久化。
在尚未实现 QSD
标志的版本中,您可以使用以下代码代替。请注意,这会在您的 url 后面留下尾随 ?
,但我对此无能为力。考虑将您的 Apache 升级到最新版本。
RewriteRule ^ %{REQUEST_URI}? [R,L]