当 htaccess 中的 url 包含问号时如何强制重定向?

当 htaccess 中的 url 包含问号时如何强制重定向?

我有一个网址:

www.example.com/PageName:ArgumentValue1,ArgumentValue2

我想重定向至

www.example.com/apex/f?p=alias:PageName:ArgumentValue1,ArgumentValue2

我迄今已完成:

RewriteCond %{SCRIPT_FILENAME} !-d
RewriteCond %{SCRIPT_FILENAME} !-f
RewriteRule (.*)$ ./apex/f?p=alias:$1 [L]

Argumentvalue除带有问号外,重定向均可正常工作。

即使参数中有问号,有什么方法可以强制进行这种重定向吗?

PageNameArgumentValue1ArgumentValue2均为动态变量。

答案1

www.example.com/PageName:ArgumentValue1,ArgumentValue2

参数值是 URL 路径的一部分,那么任何文字 ?(问号)应像%3F请求中一样进行 URL 编码。否则,未编码?表示查询字符串的开始,并有效地将 URL 一分为二 - 这就是这里发生的情况。

作为一个解决方法,您可以改为执行以下操作:

RewriteCond %{THE_REQUEST} "^GET /([^\s]+)"
RewriteRule ^[^:]+: apex/f?p=alias:%1 [L]

相关内容