У меня есть несколько старых URL-адресов, которые мне нужно перенаправить, к сожалению, некоторые из них содержат пробелы. Я перенаправляю их на свой сценарий redirect.php
, но по какой-то причине, когда URL-адрес содержит пробел или %20
, в URL после перенаправления этот% 20 повторяет неограниченное время. Это, похоже, происходит только сейчас, когда мы переключили сервер на HTTPS, когда работаем на субдомене http или на моем локальном компьютере, он работает правильно..htaccess redirect показывает несколько% 20, когда URL содержит место на HTTPS
Мое правило:
RewriteRule ^/?(gallery\.php)(.*) /redirect.php$2 [R,L]
Это работает правильно:
gallery.php?place=name
->redirect.php?place=name
Но это происходит, когда URL содержит пространство:
gallery.php?place=long%20name
->
redirect.php?place=long%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20name
Я попытался добавить [B]
и [NE]
флаги, но без успеха. Есть что-то, чего я не вижу?
UPDATE 1: Чтобы исключить другие правила в htaccess, я создал новый пример. У меня есть пустой каталог /test/
, внутри пустой файл /test/index.php
и /test/.htaccess
файл, который содержит:
RewriteEngine On
RewriteRule ^/?(index\.php)(.*) /$2 [NE,R,L]
То есть все. Тем не менее поведение странно, например: /test/index.php?a=xy работает, как ожидалось, но /test/index.php?a=x%20y повторяет знак% 20.
Интересно, он должен работать. Он работает для меня с вашим точным кодом, используя SSL. У вас есть другие перезаписи/переадресации в вашем .htaccess? Если это так, то все это в вашем вопросе может пролить свет. – Vrac
@ Vrac Я обновил свой вопрос и добавил живой пример – Ziki
Вы управляете этим сервером? Установите 'LogLevel alert rewrite: trace6' в httpd.conf и запустите журнал ошибок apache. – Vrac