Как заменить экранированные косые черты через mod_rewrite? - PullRequest
0 голосов
/ 10 января 2019

Я перевожу старый веб-сервер со странным php-скриптом для просмотра каталогов на сервер apache httpd со стандартным просмотром каталогов. Старый скрипт требовал ссылки типа http://myserver/index.php?fm_dir=dir1%2Fsubdir1%2Fsubdir2 Это должно быть заменено URL-адресом, таким как http://myserver/dir1/subdir1/subdir2

Для облегчения миграции я пытаюсь переписать URL через mod rewrite.

Я уже пробовал следующее:

RewriteCond %{QUERY_STRING} ^fm\_dir\=(.*)$
RewriteRule index\.php$ /%1? [R]

Но сбежавшие косые черты все еще избегаются, и я получаю и 404 (http://myserver/dir1%2Fsubdir1%2Fsubdir2).

Может ли кто-нибудь дать мне подсказку, как это исправить.

1 Ответ

0 голосов
/ 10 января 2019
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]
...