вопрос по путям абсолютным..

Духовность™

Продвинутый новичок
вопрос по путям абсолютным..

Приветствую.

Интересует мнение, кто как пишет URL адреса в шаблонах?

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

/index.php - всегда указывает на "начало сайта"

Но возникает проблема - если сайт положить глубже корневой директории, т.е не в DOCUMENT_ROOT, то система путей "сбивается".

В одной из своих программ мне приходилось вводить константу HTTP_DIR, которая была пустая, если сайт лежал в DOCUMENT_ROOT и значение типа "/test", если сайт находился в поддиректории test. И данную константу приходилось дописывать ко всем URL-адресам.

Но сейчас так делать не хочется, слишком ресурсоемко. Есть какие-то другие варианты? Использовать в URL относительные пути не хочу.
 

флоппик

promotor fidei
Команда форума
Партнер клуба
Всегда пользуюсь относительными путями. Не испытываю проблем.
/index.php - всегда указывает на "начало сайта"
Это, между прочим, тоже относительная ссылка.
 

x-yuri

Новичок
triumvirat у меня тоже что-то типа константы, именно для того, чтобы сайт не был привязан к корню сервера

-~{}~ 24.12.08 17:17:

а как еще? ну можно функцию написать с коротким именем (url), которая будет добавлять начало url
 

MiksIr

miksir@home:~$
Всегда пользуюсь абсолютными путями. Не испытываю проблем.

-~{}~ 24.12.08 17:45:

header('Location: ./');
А вот так нельзя
 

флоппик

promotor fidei
Команда форума
Партнер клуба
А вот так нельзя
Скажем так, по документации — нельзя, но работает везде.
с какого это вдруг?
С такого, что это ссылка, относительно корня ТЕКУЩЕГО домена и протокола. Абсолютная ссылка содержит полностью весь путь, включая домен, протокол, и подобные параметры.

-~{}~ 24.12.08 20:55:

Зачем вводить какие то константы, которые нужно настраивать руками, если у вас есть этот параметр текущего расположения?
 

MiksIr

miksir@home:~$
Скажем так, по документации — нельзя, но работает везде.
Скажем так - получить абсолютный путь в PHP не проблема, так зачем же делать "как работает", если не сложно сделать "как правильно"
Зачем вводить какие то константы, которые нужно настраивать руками, если у вас есть этот параметр текущего расположения?
А как быть, если документ используется на разных уровнях сайта? Да еще при этом используется один и тот же шаблон?
 

Духовность™

Продвинутый новичок
Зачем вводить какие то константы, которые нужно настраивать руками, если у вас есть этот параметр текущего расположения?
ты про что?

-~{}~ 24.12.08 18:10:

А как быть, если документ используется на разных уровнях сайта? Да еще при этом используется один и тот же шаблон?
относительные пути вида

./test

которые броузерами транслируются в "нормальный" вид. Т.е. протокол диктует одни условия URL-адресации, а HTML допускает использование относительных урлов, которые по логике противоречат самому протоколу.
 

nalim

Новичок
хмм 1 сайту лучше бы лежать в DOCUMENT_ROOT ибо он как раз для этого)
2 можно налету переписывать mod_rwrite все запросы -
например /index.php переписать в /test/index.php тогда менять URL в шаблонах не придется

а вообще интересно куда ведут ссылки в шалонах? все на /index.php c параметрами?
или сайт - набор самостоятельных скриптов?)
 

флоппик

promotor fidei
Команда форума
Партнер клуба
А как быть, если документ используется на разных уровнях сайта?
Использовать абсолютную ссылку.
triumvirat у меня тоже что-то типа константы, именно для того, чтобы сайт не был привязан к корню сервера
-~{}~ 24.12.08 21:18:

противоречат самому протоколу.
http://www.faqs.org/rfcs/rfc1808.html
можешь примеры поглядеть, раздел 5.1
 

Духовность™

Продвинутый новичок
флоппик
Не испытываю проблем
поясни, как ты можешь не испытывать проблем, если при урл вида server.com/article/business/other/
у тебя не будет банально работать подгрузка изображения с относительным урлом вида ./images/image.jpg - запрос к картинке будет слаться по server.com/article/business/other/images/image.jpg вместо server.com/images/image.jpg
 

флоппик

promotor fidei
Команда форума
Партнер клуба
/images/image.jpg
точку не надо тут.
По моему, тебе сначала с правилами относительных путей ознакомится, а потом их ругать.
./ — это унаследовано от относительных урлов в файловой системе, потому что HTML! не обязательно должен работать по HTTP, он может ссылатся и на структуры внутри ФС.
В ФС => HTTP
./images/image.jpg => images/image.jpg (дополняется до текущего пути слева)
/images/image.jpg => /images/image.jpg => (считается ОТ КОРНЯ, либо корня ФС, либо — корня вебсервера)
 

fixxxer

К.О.
Партнер клуба
class UrlBuilder {
protected $domain;
protected $prefix;
function build_url(..) { .. }
}
 

x-yuri

Новичок
fixxxer а чего так сложно и какие возможности у класса? только дописывать слева корректный путь или еще параметры можно в виде массива указывать?
 
Сверху