在网址中有?(问号)时重定向到网站?

时间:2014-07-26 09:09:36

标签: php .htaccess mod-rewrite redirect

如果网址中有?(问号),我需要一个重定向的htaccess,

一些示例网址

mysite.com/?p=44
mysite.com/?m=44
mysite.com/?cat=44
mysite.com/index.php?cat=44

问号可以在" /"之后的任何地方。它应该适用于" www"没有它。

如果有问号,则应转到newsite.com。

因为我是htaccess的新手,所以我不知道该怎么做以及来自你的新帮助。 感谢。

1 个答案:

答案 0 :(得分:3)

您可以尝试此规则

RewriteEngine On
RewriteCond %{QUERY_STRING} ^(.+)$
RewriteRule ^ http://newsite.com/? [L,R=301]

如果您使用的是Apache v2.4,则可以在?目标URI中使用QSD标记而不是RewriteRule

RewriteRule ^ http://newsite.com [L,R=301,QSD]

说明

%{QUERY_STRING}是特殊变量,它包含URI的查询字符串部分(例如:var=123)并且它不包含?,因为它已经知道?在URI中,它是查询字符串%{QUERY_STRING}的一部分。

^(.+)$是正则表达式,表示URI中的查询字符串必须以^开头,并且结束$并且包含任何字符.一次或多次{{1}在+捕获组内。

所以这基本上意味着如果任何追加到您的URI的查询字符串条件()变得真实,而下一行RewriteCond会将其工作重定向到您的新网址。