我有一个网址:
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
除带有问号外,重定向均可正常工作。
即使参数中有问号,有什么方法可以强制进行这种重定向吗?
PageName
、ArgumentValue1
和ArgumentValue2
均为动态变量。
答案1
www.example.com/PageName:ArgumentValue1,ArgumentValue2
自参数值是 URL 路径的一部分,那么任何文字 ?
(问号)应像%3F
请求中一样进行 URL 编码。否则,未编码?
表示查询字符串的开始,并有效地将 URL 一分为二 - 这就是这里发生的情况。
作为一个解决方法,您可以改为执行以下操作:
RewriteCond %{THE_REQUEST} "^GET /([^\s]+)"
RewriteRule ^[^:]+: apex/f?p=alias:%1 [L]