RewriteRule with"<"和">"

时间:2014-10-16 20:03:18

标签: apache .htaccess

我正在使用的这个网站使用一种奇怪的方法来传递多个参数,查询字符串类似于:?terms=43<|>300,201<|>100

服务器端,它explode('<|>',$_GET['terms'])分割参数(我知道,它太丑了)。

这是我可以更改的内容,但<|>分隔符必须正常工作,因为链接已经在其他网站上传播。它实际上适用于除IE以外的大多数浏览器,IE将URL作为UTF-8发送,并且不像其他浏览器那样转义<>(%3C和%3E)。

在IE上,当我输入其中一个网址时,我只看到403错误,因为<|>混淆了来自htaccess的重写规则以及通常的重写规则将index.php文件添加到网址永远不会被执行。

所以,我需要一个RewriteRule来将<|>更改为|(只有|,IE可以工作)。

我试过这个,但没有成功:

RewriteRule ^(.*)<\|>(.*)<\|>(.*)$ $1|$2|$3 [NE]

(我保留了网址的三个部分并将<|>替换为|

任何帮助?

1 个答案:

答案 0 :(得分:1)

您无法匹配规则本身的查询字符串,您需要使用%{QUERY_STRING}变量:

RewriteCond %{QUERY_STRING} ^(.*)<\|>(.*)<\|>(.*)$
RewriteRule ^(.*)$ /$1?%1|%2|%3 [L,R]