В чем разница между путями, начинающимися с '/' и '~ /' - PullRequest
0 голосов
/ 05 сентября 2018

Я видел этот вопрос , но это ответ на что-то еще.

Сегодня у меня возникла странная (по крайней мере для меня) проблема. Проблема в том, что у меня есть этот код на моем сайте ...

<link rel="icon" type="image/png" sizes="16x16" href="~/img/TT_favicon_16px.png" />

Фавикон был возвращен почти на всех страницах сайта, но не на одной из страниц сайта.

Я только что вообразил (из ничего), что убрал знак тильды, и он начал работать на всех страницах сайта.

<link rel="icon" type="image/png" sizes="16x16" href="/img/TT_favicon_16px.png" />

Это подняло мое любопытство, и я хотел понять, в чем разница между этими двумя ...

1 Ответ

0 голосов
/ 05 сентября 2018

Это контекстно.

Скажем, URL текущей страницы: http://example.com/foo/bar.html.

Ссылки по абсолютному пути, начинающиеся с косой черты, например /quux/grault.html, заменят весь путь, оставив сервер в покое: http://example.com/quux/grault.html.

Ссылки относительного пути, не начинающиеся с косой черты, как fred/baz.html, будут добавлены к последней косой черте пути: http://example.com/foo/fred/baz.html.

Что касается HTTP и его интерпретации, ваша тильда не представляет собой ничего особенного. Это не полный URL-адрес, и он не начинается с косой черты, поэтому это относительный URL-адрес пути, и в нашем примере вы получите следующий URL: http://example.com/foo/~/img/TT_favicon_16px.png. Когда вы удаляете тильду, она становится ссылкой на абсолютный путь, и вы получаете http://example.com/~/img/TT_favicon_16px.png.

Когда вы посещаете эти две ссылки, то, что обслуживается, зависит от конфигурации вашего веб-сервера. Я никогда не пробовал такую ​​ссылку, как http://example.com/~/... или http://example.com/foo/~/..., но сомневаюсь, что она будет работать - большинство веб-серверов не настроены на что-либо разумное для ответа на такой URL-адрес (и действительно, на моем компьютере я получаю 404 Not Found ). Почему вы получили ответ, невозможно выяснить, не проверив, как настроен ваш веб-сервер.

...