Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/apache/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/.htaccess/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache 重写COND-如何避免这种情况?_Apache_.htaccess_Mod Rewrite - Fatal编程技术网

Apache 重写COND-如何避免这种情况?

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

您好,我在重写此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\/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。