Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/250.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 当URL中有?(问号)时链接到站点?_Php_.htaccess_Mod Rewrite_Redirect - Fatal编程技术网

Php 当URL中有?(问号)时链接到站点?

Php 当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

我需要一个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的新手,我不知道该怎么做,你会给我一些新的帮助。 谢谢。

你可以试试这个规则

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中是否有“?”。(.+)是什么意思?