Почему Apache удаляет несколько слэшей? - PullRequest
4 голосов
/ 02 января 2012

Это RewriteRule

RewriteRule ^test/(.*)$ test.php?url=$1

По этому URL

mysite.com/test//one///two////three///

дает мне этот результат

$1=url='one/two/three/'

Я использую easyphp, если это важно, и мне хотелось бы знать почему Apache удаляет несколько слэшей внутри, не перенаправляя на исправленный URL?и как я могу отключить или добавить перенаправление к этому поведению?

Заранее спасибо

1 Ответ

8 голосов
/ 02 января 2012

Кажется, несколько слэшей не соответствуют стандарту.Как указано в в этом сообщении , RFC 1630 говорит:

PATH

Остальная часть URI следует за двоеточием в форматев зависимости от схемы.Путь интерпретируется способом, зависящим от используемого протокола.Однако, когда он содержит косые черты, это подразумевает иерархическую структуру.

/// не подразумевает иерархическую структуру - у вас будут пустые имена папок.Исходя из этого, я бы предположил, что поведение Apache разработано.(Не следует использовать несколько слэшей, поскольку в результате получится недопустимый URL-адрес).

Вместо этого я бы использовал другой символ.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...