Apache 重写COND-如何避免这种情况?
您好,我在重写此url时遇到问题-我如何转义它以使其自身正确 url已发送到公共域,如下所示:Apache 重写COND-如何避免这种情况?,apache,.htaccess,mod-rewrite,Apache,.htaccess,Mod Rewrite,您好,我在重写此url时遇到问题-我如何转义它以使其自身正确 url已发送到公共域,如下所示: http://www.domain.com/directory/directory-2/10018485&key=3945 我需要写一条规则来纠正它: http://www.domain.com/directory/directory-2/10018485?key=3945 ` 我试图这样做,但没有成功 RewriteCond %{REQUEST_URI} \/directory\/dir
http://www.domain.com/directory/directory-2/10018485&key=3945
我需要写一条规则来纠正它:
http://www.domain.com/directory/directory-2/10018485?key=3945
`
我试图这样做,但没有成功
RewriteCond %{REQUEST_URI} \/directory\/directory-2\/10018485&key=3945
RewriteRule ^(.*)$ /directory/directory-2/?id=10018485&key=3945 [L]
谢谢:)您不需要在与%26的比赛中逃脱(&A)。你所拥有的对我来说很好,但我不知道为什么它对你不起作用。但是你不需要重写,你可以把2合并成一个规则。当实际请求是
/directory/directory-2/10018485&key=3945
或directory/directory-2/10018485%26key=3945
RewriteRule ^directory/directory-2/10018485&key=3945$ /directory/directory-2/?id=10018485&key=3945 [L]
在更抽象的意义上:
RewriteRule ^directory/directory-2/([0-9]+)&key=([0-9]+)$ /directory/directory-2/?id=$1&key=$2 [L]
目录和目录2是常数吗?不改变吗?我认为请求URI是url编码的。你可以把正则表达式放在重写规则中;无需使用“重写条件”。试试这个:
RewriteRule^directory/directory-2/10018485&key=3945$/directory/directory-2/?id=10018485&key=3945[L,R]
(我添加R是为了防止谷歌中的内容重复)。否则请分别为&
和=
尝试%26和%3D。