我正在将带有奇怪的php脚本的旧Web服务器进行目录浏览迁移到具有标准目录浏览功能的apache httpd服务器。 旧脚本要求使用类似http://myserver/index.php?fm_dir=dir1%2Fsubdir1%2Fsubdir2的网址 现在应该用http://myserver/dir1/subdir1/subdir2
这样的网址代替为了方便迁移,我尝试通过mod rewrite重写url。
我已经尝试了以下方法:
RewriteCond %{QUERY_STRING} ^fm\_dir\=(.*)$
RewriteRule index\.php$ /%1? [R]
但是转义的斜线仍然被转义,我得到了404(http://myserver/dir1%2Fsubdir1%2Fsubdir2)。
有人可以给我提示如何解决此问题。
答案 0 :(得分:1)
RewriteCond %{QUERY_STRING} ^fm\_dir\=(.*)$
RewriteRule index\.php$ /%1? [NE,N]
# as long as there are two or more slashes,
# replace only one and keep looping internally
RewriteRule ^(.*)\%2F(.*)\%2F(.*) $1/$2\%2F$3 [NE,N]
# when there is only one left,
# replace that last one and send redirect to the client
RewriteRule ^(.*)\%2F(.*) $1/$2 [L,R=302]