Зачем разработчику ставить косую черту в начале каждого относительного пути? - PullRequest
48 голосов
/ 30 сентября 2011

Я проверяю некоторый код для друга и обнаружил, что разработчик, создавший его сайт, начал каждого родственника src, href и include с косой черты /.

Например:

src="/assets/js/jquery.js"

Я никогда не видел этого раньше. Поэтому мой вопрос: зачем разработчику ставить косую черту / в начале относительного пути?

Ответы [ 3 ]

69 голосов
/ 30 сентября 2011

Это сделано для того, чтобы корень пути (делая его абсолютным путем).

Это гарантирует, что путь не относительный, а считывается из корня сайта.

Это позволяетодин для перемещения файла и не нужно менять ссылки на различные ресурсы.

Используя ваш пример:

src="/assets/js/jquery.js"

Если файл ссылки находится в /pages/admin/main.html (например)используя относительные пути, которые вы используете:

src="../../assets/js/jquery.js"

Предположим, вы переместили файл в дочерний каталог.Никаких изменений для исходного корневого пути не потребуется, но относительный должен измениться на:

src="../../../assets/js/jquery.js"
29 голосов
/ 30 сентября 2011

При добавлении @ ответа Одеда косая черта делает URL-адрес абсолютным.

Например:

/foo/bar/baz.css

Это означает:

http://www.example.com/foo/bar/baz.css

Но без косой черты все становится немного по-другому:

foo/bar/baz.css

Это говорит браузеру, что нужно искать в папке текущая (не в корневой папке) каталог foo а затем последующие каталоги и файл.


Также возьмем, к примеру, этот HTML:

<script type="text/javascript" src="foo.js"></script>

Если вы переместите файл HTML в другую папку, сценарийне загружается, так как foo.js не перемещается с файлом HTML.

Но если вы используете абсолютный URL:

<script type="text/javascript" src="/foo.js"></script>

, тогда JS-файл загружается ТОЧНО из http://www.example.com/foo.js независимо от того, где находится файл HTML.

8 голосов
/ 30 сентября 2011

Это означает, что ресурс поступает из «корня» веб-сервера.

Например, Host is www.example.com URL становится www.example.com/assets/js/jquery.js

Я делаю это с проектомЯ хочу обеспечить работу на собственном виртуальном хосте.

Проблема действительно сводится к тому, где эти активы включены.Например, если ресурс включен из / help / pages / faq, тогда разработчик может быть уверен, что путь будет работать правильно, когда сайт размещен на неизменном хосте, например example.com.

Проблемаиспользования относительных путей, assets / js / jquery.js заключается в том, что если ресурсы включаются из / help / pages / faqs, то путь становится относительно этой начальной точки, например / help / pages / faqs / assets / js/jquery.js

Надеюсь, это поможет

...