如何使用htaccess规则从URL中删除查询字符串?

时间:2019-01-18 09:53:24

标签: .htaccess mod-rewrite

URL末尾在我网站的每个页面上都可以进行?css=(mobile|desktop)查询。我需要像这样删除此查询:

  • example.com/?css=mobileexample.com

  • example.com/dir1?css=mobileexample.com/dir1

  • example.com/dir1/.../dir10?css=mobileexample.com/dir1/.../dir10

我试图这样做,但是我无法制定正确的规则。

RewriteCond %{QUERY_STRING} css=(mobile|desktop)
RewriteRule ^(.*) problemhere [R=301,L]

1 个答案:

答案 0 :(得分:1)

我要说的问题是,您需要保留 other 个潜在的get参数...

可能类似的东西可能起作用:

RewriteEngine on
RewriteCond %{QUERY_STRING} ^(.*)&?css=(mobile|desktop)(.*)$
RewriteRule ^/?(.*)$ /$1?%1%2 [R=301,L,QSD]

如果必须使用该规则集(应该尝试防止...),则该规则集应在http服务器主机配置中以及动态配置文件(“ .htaccess”样式文件)中同样起作用。

这是@MrWhite在评论中指出的具有固定条件的修改版本:

RewriteEngine on
RewriteCond %{QUERY_STRING} ^(.*?)&?css=(?:mobile|desktop)(.*)$
RewriteRule ^/?(.*)$ /$1?%1%2 [R=301,L,QSD]