Jump to content
  • 0

Относительные урлы


Victor Ananiev
 Share

Question

Я уже задолбался наступать на одни и теже грабли... Обьясните мне плз когда можно использовать относительные урды а когда нет, и когда от чего они считаются. Вот например в css файле подключенном через link rel пути считаются относительно самого файлика css а после php include все адреса отсчитываются от того файла куда инклудится... И когда абсолютный урл засовываешь в include, он ругается....

Link to comment
Share on other sites

9 answers to this question

Recommended Posts

  • 0

используйте абсолютные пути.

На клиентской стороне (внутри css, при подключении css и js) пишите / - это начало, это корень сайта. Типа

background-image: url('/images/body.gif');

на серверной стороне, когда делаете инклуды, нужно отсчитывать от DOCUMENT_ROOT. Сначала выведите его на экран и посмотрите куда он ведет:

<?php echo $_SERVER['DOCUMENT_ROOT']; ?>

а потом при подключении пишите уже с ним вместе:

<?php include_once($_SERVER['DOCUMENT_ROOT'] . '/config.php'); ?>

если что-то лежит выше веб-пространства, выше DOCUMENT_ROOT, соответственно так:

<?php include_once($_SERVER['DOCUMENT_ROOT'] . '/../secret.php'); ?>

Edited by Yulia
Link to comment
Share on other sites

  • 0
используйте абсолютные пути.

На клиентской стороне (внутри css, при подключении css и js) пишите / - это начало, это корень сайта. Типа

background-image: url('/images/body.gif');

на серверной стороне, когда делаете инклуды, нужно отсчитывать от DOCUMENT_ROOT. Сначала выведите его на экран и посмотрите куда он ведет:

<?php echo $_SERVER['DOCUMENT_ROOT']; ?>

а потом при подключении пишите уже с ним вместе:

<?php include_once($_SERVER['DOCUMENT_ROOT'] . '/config.php'); ?>

если что-то лежит выше веб-пространства, выше DOCUMENT_ROOT, соответственно так:

<?php include_once($_SERVER['DOCUMENT_ROOT'] . '/../secret.php'); ?>

ИМХО - бред! Что если скажем я пишу скрипт, который будет лежать не в корне сайта, а скажем так: http://site.ru/forum/, мне все пути в скрипте переписывать?

Нужно всегда использовать относительные пути.

1) На счет CSS файла и путей:

Скажем есть файл /templates/my_template/my.css (относительно корня сайта):

body
{
background-color: url(images/back.png);
}

И этот стиль подключается к файлу /index.html, который лежит в корне сайта. Все пути, указанные в CSS файле, будут использоваться относительно него, т.е. не важно, кто и откуда его подключает, и т.е. back.png должен лежать в /templates/my_template/images/back.png.

На счет HTML файлов, тут на сайте (помоему "Шаг за шагом") все написано.

На счет PHP и include. Когда вы подключаете какой-либо файл, код который лежит в нем, исполняется в файле, к которому он подключается, т.е.:

/1.php (корень сайта):

<?php
include "scripts/2.php";
?>

/scrits/2.php

<?php
echo "Я исполняюсь в корне сайта!!! и все пути указанные здесь, будут относительно корня сайта, т.к. я подключен к файлу который лежит в корне :) :) :)";
?>

В PHP нужно почти всегда использовать относительные пути!

Я использую полные пути, только в HTML-шаблонах для своих скриптов, и то, только для URL, т.е. у меня в шаблоне примерно так:

....
<a href="{$template.site_url}articles.php" title="Статьи">СТатьи</a>
....

Не помню причину почему я так начал делать, но она была (помоему что-то с ЧПУ связанное)

Edited by Vialls
Link to comment
Share on other sites

  • 0

:)

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

Если это проект, который будет непонятно где запускаться, где сегодня один корень сайта, а завтра - другой, а послезавтра ты дашь архив другу, чтоб он заценил, то конечно нужно использовать относительные пути.

Link to comment
Share on other sites

  • 0
:)

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

Если это проект, который будет непонятно где запускаться, где сегодня один корень сайта, а завтра - другой, а послезавтра ты дашь архив другу, чтоб он заценил, то конечно нужно использовать относительные пути.

Зря зря зря и еще раз зря :) ИМХО любой проект, должен быть легко переносим, без каких-либо сложных действий, будь то крупномаштабный, который будет долго лежать на одном сервере (но не вечно), будь то маленький проектик, который будет таскаться из места в место.... Ничто не вечно, все меняется, а при смене рулят относительные пути :) . Конечно, тут выбор стоит перед каждым, и выбрать можно то, что кажется удобнее, я выбираю относительные пути.

Ну если дошло до "спора", что лучше, давайте обсудим плюсы и минусы относительных и абсолютных путей. Может в итоге кто-то из нас изменит свое мнение... Мой первый аргумент - переносимость. Что скажите вы на счет абсолютных пуьей, Юлия :) ?

Edited by Vialls
Link to comment
Share on other sites

  • 0

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

ЗЫ вижу не я один такой, в новогоднюю ночь сижу на форуме)

Link to comment
Share on other sites

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

ЗЫ вижу не я один такой, в новогоднюю ночь сижу на форуме)

Давайте не будем спорить, но давайте обсудим, инетесная тема для обсуждения :) Вот я у абсолютных тоже не вижу плюсов, кроме "как-бы" конкретности, строгости...

P.S.

да, не один, я ток пришел и сразу за комп :), но у меня уже не ночь, а 4:59 :)

Link to comment
Share on other sites

  • 0

да ладно тут дело вкуса. Как говорит мой папа: "Кто-то любит сливы, а кто-то косточки от них".

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

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

Насчет переносимости.. Я же не призываю прописывать абсолютный путь в виде /home/user567/site.ru/www/ (1), привязывая его к конкретному хостеру, или c:\Projects\site.ru\html\ (2), привязывая его к своей машине. Я говорю об использовании $_SERVER['DOCUMENT_ROOT'] - она автоматически содержит (1) или (2), в зависимости от того, где обнаруживает себя сайт, запускаясь ^_^

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

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. See more about our Guidelines and Privacy Policy