Как стать автором
Обновить

Комментарии 28

base уже сто лет в обед, это вообще для фреймов придумывали. Не юзайте эту каку
Почему?

Попробуйте вставить в страничку с base svg с clippath (что будет). Некоторые библиотеки тоже начинают криво работать.

Это, как раз, частный случай, особенностей якоря. В вашем коде стоит: clip-path=«url(#myClip)». Я сделал тестовую страницу специально с папкой на уровень ниже, и добавил имя папки в url: clip-path=«url(svg/#myClip)». Теперь, ваша картинка работает: http://blox.ru/svg/.

Нужно всегда держать в голове особенность применения якорей с тегом base. Например, Angular JS в режиме HTML5 также использует base, и программисты столкнулись по началу с трудностями.

Я не утверждал, что исправить нельзя.


Нужно всегда держать в голове особенность применения якорей с тегом base.

Именно из-за этого и появляются не самые приятные проблемы. Поэтому я поддерживаю первый комментарий.

Cамое простое решение — вынести svg-код в файл ".svg", где base уже не действует.
Меняется логика работы путей. Я не говорю хуже/лучше, но она становится другой.
Соответственно, весь ваш код, и на сервере и в браузере, должен об этом знать. Включая все либы, сторонние ресурсы и т.д.
Особенно если у вас красивые человеко-понятные урлы, где параметры передаются в урле же, а то и во фрагменте.
Типа /products/t-shirts/#page2
Happy debugging, как говорится.
1.
Если библиотека не поддерживает стандарты HTML5, то это несерьезная библиотека.
2.
А в чем проблема с параметрами и хешами в ЧПУ?
href="/shop/t-shirts/?a=1&b=2
href="/shop/t-shirts/#comments
это обычные ссылки.
При чём здесь HTML5? Base — это из очень, очень лохматых времён ещё до HTML4. Тогда многие сайты представляли собой просто набор html-файлов и картинок без всякой динамики, которую часто заменяли фреймы. При переносе такого «сайта» из папки в папку на этом или другом же сервере нужно было или менять все ссылки на всех страницах и прописывать новые урлы (а с учётом качества поддержки, кхм, «стандартов» в те времена это была не самая тривиальная операция для машинной обработки), либо один раз прописать/поправить base в файле корневого фреймсета.
Бэкенд про base в общем случае ничего не знает. От веб-сервера приходит путь от корня сайта, и задача вычленить текущий base лежит на бэкенде. Что хуже, бекенд должен выдать в ответ html, в котором все ссылки приведены с учётом base, который устанавливается «где-то выше». Т.е. каждая вьюха, компонент или что там у вас рендерит html кроме своих непосредственных параметров должно знать, а какой там на этой странице base. Я могу ошибаться, но сильно вот не уверен, что какой-нибудь Yii или другие современные фреймворки с их декомпозицией в такое умеют.
Да, ошибка, оказывается base был уже с HTML3
Мы много лет пользуемся ссылками на основе base в нашей CMS — проблем пока не было, кроме одной. Програмисты, не знающие о том, что в CMS используется base, спотыкаются при первой попытке использования якоря, потом всё идет нормально.
А нельзя в base не указывать последний слеш и ставить его в начале путей? Тогда они будут выглядеть как абсолютные.
Проверено, не прокатит
href="../../" — ссылка со страницы товара на главную страницу

href="/"
По этой ссылке вы попадете на главную страницу, так сказать, портала http://site.ru/
В этой же статье описан более сложный случай, а именно: на портале имеется независимый сайт (интернет-магазин), который лежит в папке http://site.ru/shop

Безотносительно примера, в таком случае лучше вынести магазин на отдельный поддомен.

Наши СЕОшники говорят, что поддиректории лучше для SEO, чем поддомены.


Быстрый гуглинг выдает кучу обсуждений по этому вопросу — видать, тема и правда спорная. Но вроде, превалирующая рекомендация — поддиректории.

Ссылки на сайте должны быть только абсолютными, в этом случае когда контент с сайта скопируют у вас есть небольшой шанс что ссылки на ваш сайт останутся. Конечно при копировании ссылки на источник могут быть удалены, изменены, но практика показывает что ссылки в том или ином виде остаются неизменными достаточно часто. Никакой значимой пользы от относительных ссылок нет (перенос сайта на другой домен вариант настолько редкий и настолько просто обходится простой заменой что его не разумно учитывать).
Не совсем понятно как будет копироваться контент. Например, если просто копи-пастить в WYSIWYG редактор, то там будут стоять уже абсолютные ссылки.
А если говорить о ботах, то они учитывают и хост, и base, так как, на мой вгляд, самый распространенный вариант ссылок отнюдь не абсолютный, а root-relative то есть, href="/shop/".
Удивительная тенденция на хабре последнее время — создавать посты с тем, что есть в любом учебнике по HTML.

Надо бы написать статью, что за тег <a>, и зачем в нём нужен target.
НЛО прилетело и опубликовало эту надпись здесь
Что плохого в том, что рассказываются основы? Когда кто-то приходит на секцию по боксу, его тоже неделю-две заставляют со скакалками прыгать, и никто же не говорит «что это за саранча тут записалась». Флажок «Tutorial» в том числе говорит о том, что статья — обучающая.
Все нормально, просто новое поколение подрастает, и то, что нам кажется очевидным, для них — удивительный мир открытий )
Тут и про favicon на днях писали, и про php -S, так что про ссылки — из той же оперы )
Ну напишите не элементарщину?
Согласен статья элементарная. Я ее сначала написал для себя, чтобы разложить все по полкам у себя в голове. Но главное решить для себя нетривиальный вопрос «root-lelative(4) vs base(5)». Надеюсь сообщество поможет мне разобраться.
У меня правила следующие:
— отдельный проект — отдельный домен/субдомен
— в рамках проекта все ссылки root-relative
— между проектами только абсолютные (естественно)
— подгрузка сторонних javascript только protocol relative
— никогда ни при каких условиях не использовать base
Использую по проектам абсолютные ссылки по четвертому примеру. Если нужно сделать http://sites.ru/shop/, то добавляю рядом с папкой основного сайта папку shop, направляю на нее shop.site.ru и не имею никаких проблем с если так можно выразиться, вложенными проектами. С CMS, которые используют относительные пути, тег base, либо абсолютные из первого примера не дружу, так как возникают нюансы при синхронизации между локальной и рабочей версиями.
Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.