Hello Andrey!
Tuesday, November 22, 2005, 10:58:35 AM, you wrote:
AY> Вообще, <base ...> это просто вынесенное "за скобки" начало всех
AY> ссылок на странице. Т.е. нет никакой разницы в том, что ставить полный
AY> урл в каждой ссылке на сайте или вынести хост в заголовки.
В контексте дискуссии это имеет смысл в том плане, что можно прочитать
адрес "базы" в коде сохранённой страницы и определить, адрес сайта,
что и требуется.
AY> А обломался я вот почему. У меня почти везде на страницах идут
AY> абсолютные ссылки но относительно корня сайта (DOCUMENT_ROOT). Т.е.,
AY> если я нахожусь где-то в глубине, а мне надо сослаться на какую-нибудь
AY> картинку, то я делаю не ../../../img/pic.gif, а /img/pic.gif.
Вероятно, это не просто "какая-нибудь картинка", а из чиста оформления
сайта? Ибо картинки от статей, по идее, в других местах хранятся, по
своим правилам.
AY> Но вот есть у меня один раздел, который показывается одним скриптом. И
AY> там, при выводе, например, ссылок на разные его страницы, я пишу:
AY> <a href="?id=123">. И тут получается ж...
AY> Использовать в этом разделе другой бэйс нельзя, потому что там же в
AY> нём есть шапка с меню, которая ссылается на другие разделы, но уже от
AY> корня.
AY> Так что, бэйс - не панацея!
При такой структуре - согласен. Я предпочитаю иной вариант:
Все ссылки ведут на "index.php" с аргументами. Оный скрипт рисует
оформление и всё такое, а также в зависимости от get-\post-переменной
"контент" инклюдит нужный модуль контента, остальные переменные его не
касаются. В отличии от тех самых модулей, которые уже и обрабатывают
свои данные, взятые из того же гета или поста.
Таким образом, фактически ВСЕ страницы расположены в корне сайта,
поэтому можно смело писать "/img/pic.gif". Недостаток метода - ссылки
на страницы раздела нужно писать в виде
"index.php?content=news&id=123".
Теперь вуаля! Прибавляем к этому mod_rewrite, с помощью которого
переписываем урлы вида "^news/([0-9]+)/?$" в
"index.php?content=news&id=$1". Таким образом ссылка на раздел будет
просто <a href="news">, а ссылка на отдельную новость, например такая:
<a href="news/123">. Проблема может возникнуть, т.к. эта страница,
якобы, находится не в корне сайта, в а директории "news", о реальном
отсутствии которой браузер понятия не имеет. Следовательно, картинка
по адресу "/img/pic.gif" будет искаться не там, где фактически
написано в коде, а на "/news/img/pic.gif" или даже на
"/news/123/img/pic.gif" относительно корня. Поэтому...
Ещё раз вуаля! Пишем а шапку сайта базу
"http://".$_SERVER['HTTP_HOST']."/" с вариациями (кто какие переменные
использует). Таким образом, наша ссылка <a href="news/123"> становится
АБСОЛЮТНОЙ! :-)
Если вы принципиально не желаете писать имя раздела в ссылках
того же раздела, в конце концов можно процесс дописывания этого имени
к ссылкам автоматизировать, но это, IMHO, изврат.
Занавес...
WBR, Demetrius
библиотекa сайтостроительства http://www.i2r.ru/static/244/