使用htaccess从URL中删除?query = string

时间:2015-05-26 22:33:00

标签: regex apache .htaccess mod-rewrite

我曾经有一个用于处理移动页面的查询字符串。现在网站响应它不需要它,我需要做301重定向让google知道。

所以

http://www.example.com/aaa/bbb?fromMobile=true 应该成为 http://www.example.com/aaa/bbb

http://www.example.com/aaa?fromMobile=true 应该成为 http://www.example.com/bbb

http://www.example.com?fromMobile=true 应该成为 http://www.example.com

我有:

RewriteCond %{QUERY_STRING} ^(?)fromMobile=true$ [NC]
RewriteRule (.*) /$1?%1&%2 [R=301,L]

但这重定向:

http://www.example.com?fromMobile=truehttp://www.example.com

如何摆脱拖尾问号?我没有快乐地尝试了很多东西。

1 个答案:

答案 0 :(得分:1)

您可以使用:

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

这假设除了fromMobile=true之外没有其他查询参数。

如果还有其他查询参数的可能性,请使用:

RewriteCond %{QUERY_STRING} ^(.+?&)?fromMobile=true(?:&(.*))?$ [NC]
RewriteRule (.*) /$1?%1%2 [R=301,L]