Лишние слеши в URL плохо?

Я заметил, что https://stackoverflow.com//////////questions/4659504/ является допустимым URL. Однако https://www.google.com//////////analytics/settings нет. Существуют ли различия, присущие технологиям веб-серверов, которые объясняют это? Следует ли правильно интерпретировать url-адрес с ненужными косыми чертами или он должен возвращать ошибку?

4 ответов


прежде всего, добавление косой черты изменяет семантику URL-пути, как и любой другой символ. Так по определению /foo/bar и /foo//bar не эквивалентны, так как /foo/bar и /foo/bar/ не эквивалентны.

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


Они оба являются допустимыми URL-адресами.
Однако сервер Google не может справиться со вторым.

нет никакой конкретной причины обрабатывать или отклонять URL-адреса с повторяющимися косыми чертами; вы должны тратить больше времени на более важные вещи.


Что вы считаете "правильно толковать"? Http только действительно specifices, как вещи в передней части Слэш после имени сервера получает толкование. Остальное полностью зависит от веб-сервера. Он анализирует то, что вы даете ему после этого момента (любым способом), и представляет вам любой HTML, который он чувствует, как предоставление этого текста.


есть разница в том, как каждое приложение обрабатывать запросы. Если вы настроили приложение для замены последующих косых черт перед маршрутизацией запроса, у вас не должно быть никаких проблем.