Веб-серверы обычно удаляют несколько слэшей до того, как приложение увидит запрос, для обеспечения совместимости и безопасности. При обслуживании простых файлов обычно разрешается использовать любое количество слешей между сегментами пути как один слеш.
Пустые сегменты пути URL не являются недействительными в URL, но их обычно избегают, поскольку относительные URL с пустыми сегментами могут неожиданно анализироваться. Например, в /module/search
ссылка на //subject/param
относится не к файлу, а к серверу subject
с путем /param
.
Возможность увидеть последовательности из нескольких слешей из исходного URL-адреса зависит от вашего сервера и среды приложения. Например, в CGI (и других основанных на нем стандартах шлюза) переменная PATH_INFO
, которая обычно используется для реализации маршрутизации, обычно пропускает несколько слэшей. Но в Apache есть нестандартная переменная окружения REQUEST_URI
, которая дает исходную форму запроса, не выбрасывая косую черту и не выполняет% -unescaping, как PATH_INFO
. Поэтому, если вы хотите разрешить пустые сегменты пути, вы можете, но это сократит ваши параметры развертывания.
Существуют и другие строки, кроме пустой строки, которые также не образуют хороших сегментов пути. Использование закодированного /
(% 2F), \
(% 5C) или нулевого байта (% 00) по умолчанию блокируется многими серверами. Таким образом, вы не можете поместить любую старую строку в сегмент; его нужно будет обработать, чтобы удалить некоторые символы (часто «слаг», чтобы удалить все, кроме букв и цифр). Пока вы делаете это, вы можете также заменить пустую строку на _
.