Php 当URL中有?(问号)时链接到站点?
我需要一个htaccess,如果URL中有?(问号),它将重定向 一些示例URLPhp 当URL中有?(问号)时链接到站点?,php,.htaccess,mod-rewrite,redirect,Php,.htaccess,Mod Rewrite,Redirect,我需要一个htaccess,如果URL中有?(问号),它将重定向 一些示例URL mysite.com/?p=44 mysite.com/?m=44 mysite.com/?cat=44 mysite.com/index.php?cat=44 问号可以在“/”后面的任何位置。它应该在有“www”的情况下工作,也可以在没有“www”的情况下工作 如果有疑问,请访问newsite.com 由于我是htaccess的新手,我不知道该怎么做,你会给我一些新的帮助。 谢谢。你可以试试这个规则 Rewri
mysite.com/?p=44
mysite.com/?m=44
mysite.com/?cat=44
mysite.com/index.php?cat=44
问号可以在“/”后面的任何位置。它应该在有“www”的情况下工作,也可以在没有“www”的情况下工作
如果有疑问,请访问newsite.com
由于我是htaccess的新手,我不知道该怎么做,你会给我一些新的帮助。
谢谢。你可以试试这个规则
RewriteEngine On
RewriteCond %{QUERY_STRING} ^(.+)$
RewriteRule ^ http://newsite.com/? [L,R=301]
如果您使用的是Apache v2.4,则可以在重写规则
目标URI中使用flag而不是?
RewriteRule ^ http://newsite.com [L,R=301,QSD]
说明:
%{QUERY\u STRING}
是一个特殊变量,它包含URI的查询字符串部分(例如:var=123
),但不包含?
,因为它已经知道?
是否在URI中,它是查询字符串%{QUERY\u STRING}
的一部分
^(+)$
是regex,它表示URI中的查询字符串必须以^
开头,并以$
结尾,并且在()
捕获组中包含任何字符
一次或多次+
因此,这基本上意味着,如果任何查询字符串附加到您的URI,则条件RewriteCond
将变为真实,并且下一行RewriteRule
将重定向到您的新URL。您可以尝试此规则
RewriteEngine On
RewriteCond %{QUERY_STRING} ^(.+)$
RewriteRule ^ http://newsite.com/? [L,R=301]
如果您使用的是Apache v2.4,则可以在重写规则
目标URI中使用flag而不是?
RewriteRule ^ http://newsite.com [L,R=301,QSD]
说明:
%{QUERY\u STRING}
是一个特殊变量,它包含URI的查询字符串部分(例如:var=123
),但不包含?
,因为它已经知道?
是否在URI中,它是查询字符串%{QUERY\u STRING}
的一部分
^(+)$
是regex,它表示URI中的查询字符串必须以^
开头,并以$
结尾,并且在()
捕获组中包含任何字符
一次或多次+
因此,这基本上意味着,如果任何查询字符串附加到您的URI,则条件RewriteCond
将变为真实,并且下一行RewriteRule
将重定向到您的新URL。您可以尝试此规则
RewriteEngine On
RewriteCond %{QUERY_STRING} ^(.+)$
RewriteRule ^ http://newsite.com/? [L,R=301]
如果您使用的是Apache v2.4,则可以在重写规则
目标URI中使用flag而不是?
RewriteRule ^ http://newsite.com [L,R=301,QSD]
说明:
%{QUERY\u STRING}
是一个特殊变量,它包含URI的查询字符串部分(例如:var=123
),但不包含?
,因为它已经知道?
是否在URI中,它是查询字符串%{QUERY\u STRING}
的一部分
^(+)$
是regex,它表示URI中的查询字符串必须以^
开头,并以$
结尾,并且在()
捕获组中包含任何字符
一次或多次+
因此,这基本上意味着,如果任何查询字符串附加到您的URI,则条件RewriteCond
将变为真实,并且下一行RewriteRule
将重定向到您的新URL。您可以尝试此规则
RewriteEngine On
RewriteCond %{QUERY_STRING} ^(.+)$
RewriteRule ^ http://newsite.com/? [L,R=301]
如果您使用的是Apache v2.4,则可以在重写规则
目标URI中使用flag而不是?
RewriteRule ^ http://newsite.com [L,R=301,QSD]
说明:
%{QUERY\u STRING}
是一个特殊变量,它包含URI的查询字符串部分(例如:var=123
),但不包含?
,因为它已经知道?
是否在URI中,它是查询字符串%{QUERY\u STRING}
的一部分
^(+)$
是regex,它表示URI中的查询字符串必须以^
开头,并以$
结尾,并且在()
捕获组中包含任何字符
一次或多次+
因此,这基本上意味着,如果任何查询字符串附加到您的URI中,则条件
RewriteCond
变得真实,下一行RewriteRule
将重定向到您的新URL。这可以通过PHP的GET
实现。这可以通过PHP的GET
实现。这可以通过PHP的GET
。这可以通过PHP的GET
来完成。它工作得非常好。谢谢你@RahilWazir和anubhava。我现在去谷歌看看这些行是什么意思。这一行是“RewriteCond%{QUERY_STRING}^(+)$”@RahilWazir。我想“?”应该在那一行,因为我们正在检查URL中是否有“?”。(.+)是什么意思?这很有效。谢谢你@RahilWazir和anubhava。我现在去谷歌看看这些行是什么意思。这一行是“RewriteCond%{QUERY_STRING}^(+)$”@RahilWazir。我想“?”应该在那一行,因为我们正在检查URL中是否有“?”。(.+)是什么意思?这很有效。谢谢你@RahilWazir和anubhava。我现在去谷歌看看这些行是什么意思。这一行是“RewriteCond%{QUERY_STRING}^(+)$”@RahilWazir。我想“?”应该在那一行,因为我们正在检查URL中是否有“?”。(.+)是什么意思?这很有效。谢谢你@RahilWazir和anubhava。我现在去谷歌看看这些行是什么意思。这一行是“RewriteCond%{QUERY_STRING}^(+)$”@RahilWazir。我想“?”应该在那一行,因为我们正在检查URL中是否有“?”。(.+)是什么意思?