Как применить правило перезаписи htaccess к URL-адресу, содержащему символ перевода строки (% 0A)? - PullRequest
2 голосов
/ 06 января 2012

Я сталкиваюсь с неверными URL-адресами, которые содержат экранированный перевод строки в следующем формате:

http://domain.com/%0Apath/to/file.txt

Однако, даже если я пытаюсь переписать наиболее глобально ...

RewriteRule ^.*$ /path/to/file.txt [R=301,L]

... Apache по-прежнему выдает 404:

The requested URL / path/to/file.txt was not found on this server.

(Note the space.)

Как я могу изящно перехватить эти плохие URL-адреса и направить их в нужное место назначения?

Ответы [ 4 ]

2 голосов
/ 04 декабря 2012

У меня была такая же проблема.Я исправил это с помощью ответа sarumont.

Пример URL-адреса, найденный в Инструментах для веб-мастеров:

/dummy-url/dummy-%0A%0Afull-version-download

Правило перезаписи, которое я добавил в конфигурации Apache:

RewriteRule ^/dummy-url/dummy-[\n\r]+full-version-download$ /dummy-url/dummy-full-version-download [L,R=301]
1 голос
/ 12 августа 2013

Это очень старый вопрос, но я думаю, что ни один из ответов не верен, поэтому отправьте ответ:

Замените ваше правило следующим:

RewriteRule .* /path/to/file.txt [R=301,L]
1 голос
/ 06 января 2012

Добавление \s в RewriteRule должно исправить это.

RewriteRule ^\s.*$ /path/to/file.txt [R=301,L]

Более конкретно, как всеобъемлющее

RewriteRule ^\s(.*)$ http://www.example.com/$1 [R=301,L]
1 голос
/ 06 января 2012

^.*$ не будет охватывать перевод строки.Попробуйте простой .*.Или попробуйте сопоставить символы новой строки: [\r\n].

...