LINUX.ORG.RU

Как работает двойной слеш в URL?

 


0

1

Почему страница
https://wiki.gentoo.org/wiki//etc/portage/package.license
существует, а страницы
https://wiki.gentoo.org/wiki/etc/portage/package.license
нет?

Я-то думал, что это одно и то же!

UPD: и не я один:
https://stackoverflow.com/questions/10161177/url-with-multiple-forward-slashes-does-it-break-anything

★★★

Последнее исправление: Shushundr (всего исправлений: 2)

Зависит исключительно от того, как это обрабатывается на стороне сервера. Во многих случаях делают автозамену двойных на одинарные, но в твоём случае нет.

firkax ★★★★★
()
Ответ на: комментарий от alex1101

И чего, мне теперь можно сделать страницу с именем «/» ?
Ну, чтобы получилось:

https://my.web.site/ - это сайт
https://my.web.site// - а это, к примеру, его админка.

Shushundr ★★★
() автор топика
Последнее исправление: Shushundr (всего исправлений: 2)
Ответ на: комментарий от alex1101

На практике двойной слэш в path-части URL — это «ошибка» (т.к. согласно RFC разделителем пути является именно одинарный слэш), которую большинство серверов игнорирует либо по умолчанию, либо через опции. Т.е. при обработке запроса двойные (тройные и т.д.) слэши предварительно преобразовываются к одинарным.

theNamelessOne ★★★★★
()
Последнее исправление: theNamelessOne (всего исправлений: 1)
Ответ на: комментарий от theNamelessOne

Не «на практике», а «в теории». На практике ни один веб-сервер ошибкой это не считает и даже не имеет опции считать это ошибкой. Либо заменяют на одинарный (при отдаче статики, т.к. там двойной точно никому не нужен), либо передают приложению как есть (т.е. двойной) - чтобы приложение само решало что с ним делать. Возможно, где-то есть опции (но не дефолт) превращать двойные в одинарные и для приложения.

firkax ★★★★★
()
Ответ на: комментарий от alex1101

А стандарт мне разрешает:
https://www.rfc-editor.org/rfc/rfc3986#section-3.3

path = path-abempty; begins with "/" or is empty
path-abempty = *( "/" segment )
segment = *pchar
pchar = unreserved / pct-encoded / sub-delims / ":" / "@"

сегменты могут быть пустыми и их может быть сколько угодно.

Shushundr ★★★
() автор топика
Последнее исправление: Shushundr (всего исправлений: 3)