Regex htaccessmatch&;签名

Regex htaccessmatch&;签名,regex,.htaccess,Regex,.htaccess,我希望在.htaccess中有一条规则,将/test/ABC&D转发到/test.php?s=ABC&D 我尝试了以下规则。结果将转发到/test.php?s=ABC&url中缺少“D” RewriteRule ^test/([^.]+)$ /test.php?s=$1 [PT] 您有这种行为是因为它认为&是查询字符串中的分隔符。 因此,第一个数据s包含ABC,第二个数据D为空 要在url中传递&,必须对其进行编码:%26 这就是B标志存在的原因。您可以尝试以下规则: RewriteRule

我希望在.htaccess中有一条规则,将/test/ABC&D转发到/test.php?s=ABC&D

我尝试了以下规则。结果将转发到/test.php?s=ABC&url中缺少“D”

RewriteRule ^test/([^.]+)$ /test.php?s=$1 [PT]

您有这种行为是因为它认为
&
是查询字符串中的分隔符。
因此,第一个数据
s
包含
ABC
,第二个数据
D
为空

要在url中传递
&
,必须对其进行编码:
%26

这就是
B
标志存在的原因。您可以尝试以下规则:

RewriteRule ^test/([^.]+)$ /test.php?s=$1 [PT,B]

有关
B
flag

的更多信息您是否可以控制该URL的原始来源
/test/ABC&D
?应在其源位置更改,因为除非对
&
进行编码,否则它不是有效的URL
ABC%26D
是的,我试图将URL更改为
ABC%26D
。我尝试使用
echo$\u GET['s']在test.php中输出参数输出仍然是
ABC
,没有
&D