Может ли ссылка на файл работать без указания полного пути?

Доброй ночи! Пишу шаблон для сайта. Сайт находится на bluehost.com. Шаблон на обычном php, верстку взял у верстальщика. Естественно по привычке начал менять ссылки, так как вьюха лежит в папке views, а все css и js файлы в соседней папке assets. Вот это работало сразу:
<link rel="stylesheet" href="css/all.css">
Исправил на это:
<link rel="stylesheet" href="assets/css/all.css">
И тоже работает.
В папке views нет папки css. Тем более папки css нет уровнем выше, то есть по соседству с папкой views. Но там есть папка assets и в ней папка css, в которой лежит файл all.css. Но откуда веб-сервер узнал, где находится папка css, если промежуточная папка assets не указана? Вот структура папок для большей ясности:
/assets/css/all.css
/views/template.php
  • Вопрос задан
  • 2507 просмотров
Решения вопроса 1
DmitriyEntelis
@DmitriyEntelis
Думаю за деньги
Как правильно написали @voiddancer и @nazarpc абсолютно не важно где у вас лежит файл на диске. Это html. Он разбирается браузером на стороне клиента. Он знает url по которому запросили страницу и больше не знает ничего.

Ссылки с "/" в начале загружаются от имени домена.
Ссылки без - от текущего пути.
Т.е если у Вас url страницы mysite.ru/partners
то "/css/all.css" будет искаться mysite.ru/css/all.css
а "css/all.css" - mysite.ru/partners/css/all.css
Собственно это все можно легко посмотреть в консоли браузера.

Если у Вас есть точное понимание что сайт всегда будет жить на отдельном домене - пишите ссылки вида "/css/all.css".
Если такого понимания нет - заведите переменную $basepath = 'http://mysite.ru' в конфиге сайта и в php генерите абсолютные ссылки: $basepath . '/css/all.css'

Использовать тег base я бы не рекомендовал, т.к во первых мне кажется неправильным правка html макетов при смене домена, а во вторых я многократно сталкивался с его странным поведением в различных браузерах.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
Voiddancer
@Voiddancer
node js backend
относительные ссылки в веб-коде работают немного иначе, чем в файловой системе любой оси. тут ссылки стартуют с имени домена, оно просто подставляется к любой относительной ссылке.
Ответ написан
Комментировать
nazarpc
@nazarpc
Open Source enthusiast
Или пути могут считаться относительно href атрибута тэга base если такой есть в наличии.
Очень странно что первый вариант работал, нужно посмотреть куда браузер запросы посылает, есть ли тэг base, ну и демка развеяла бы сомнения.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы