2012-09-14 6 views
5

У меня есть файл header.php, содержащий ссылку файла .css.Как использовать относительные пути для включенных файлов, таких как .css

Когда я включаю header.php в другой php-файл в другую папку, файл .css href в header.php неверен в новом php-файле.

Как я должен decleare .css href, поэтому я мог бы включить header.php с ним в любую папку?

+0

Почему бы не использовать дорожки относительно вашего домена, например '/ styles/your.css' –

+1

Используйте полную ссылку для CSS в файле header.php – Adsy2010

ответ

1

Как это:

<link rel="stylesheet" href="/css/style.css" /> 

Первый / говорит: «Идите в корневой каталог и посмотреть оттуда». Это относительный путь.

0

Написать абсолютный путь к файлу CSS, как:

<link href="http://site.com/css/style.css" />

13

Это является причиной многих больших приложений будут пытаться установить постоянные а «корневого URI»/переменный при установке.

/css/style.css В то время как будет работать, если приложение находится в корневом каталоге домена/поддомена, он потерпит неудачу, если это не так (/appName/css/style.css)

магазин абсолютный URI в папку сценария «корневой» вместе с другими конфигурационными константами/переменными, а создание абсолютных ссылок становится легким.

define('SCRIPT_ROOT', 'http://localhost/yourApplication'); 
// ... 
echo '<link rel="stylesheet" type="text/css" href="'.SCRIPT_ROOT.'/css/style.css">'; 
+0

Если я сохраняю абсолютный URI в config.php, тогда мне нужно включить config.php в header.php. Как я уже сказал, header.php и новый php не находятся в одной папке, новый файл php теперь не может найти config.php вместо файла .css. Это не облегчает ситуацию. –

+0

Если ваш код не знает о «где он» в любой структуре каталогов, я не уверен, что смогу вам помочь. Не можете ли вы скорректировать относительное местоположение в файле конфигурации? – discomatt

7

У вас есть несколько вариантов, которые я попытался собрать здесь

базового HREF

<head> 
<base href="http://www.mysite.com/" /> 
</head> 

Что она делает, это устанавливает весь hrefs, чтобы указать на определенный путь. С помощью этого набора, вы можете использовать <link rel='stylesheet' href='css/mycss.css' /> и успешно загрузить mycss.css файл, даже если вы страница глубоко в http://www.mysite.com/pages/2012/public/secret_folder/myownphpfile.php

абсолютные пути

Вы всегда можете использовать aboslute пути, такие как, но может быть болью, чтобы впоследствии изменить папки файлов.

<link rel='stylesheet' href='http://www.mysite.com/css/mycss.css' /> 

определенные Фиктивный

Как сказал @Discomatt, используя PHP определены пути является простой способ, чтобы держать вещи работать. Даунсайд; вы должны использовать PHP. если вы используете его в любом случае, никаких проблем нет ^^

define('CSSDIR', 'http://www.mysite.com/css/); 
<link rel='stylesheet' href='<?= CSSDIR ?>mycss.css' /> 
4

я вижу одну из причин для желающих иметь динамичное и относительное поколение пути для HREF ссылки, и что, если вы запустите проект на нескольких доменах или сайтах, которые имеют разные пути. (Например, ваш проект доступен на http://myproject.example.org/, а также на http://example.org/myprojecttest/).Если это не так, то я бы предложил прямо указать свой КАС включает относительно корневой папки:

<link href="/css/style.css" /> 

Если это относится к вам, попробуйте следующее:

В каждом документе верхнего уровня который требует header.php, добавляет переменную $ ROOT, которая указывает местоположение документа верхнего уровня по сравнению с корнем. например:

$ROOT = './'; 

или

$ROOT = '../'; 

или

$ROOT = '../../'; 

Теперь в файле header.php, вы можете использовать:

<link href="<?php echo $ROOT; ?>css/style.css" /> 

Это позволяет сделать файл header.php, который будет работать для любой страницы при любом относительном p ATH.

Полный пример

включаемый файл (/path/header.php)

<html><body> 
<head> 
    <link href="<?php echo $ROOT; ?>css/style.css" /> 
[...] 

Файл 1 (/path/index.php):

<?php 
$ROOT = './'; 
include 'header.php'; 
?>  

Файл 1 (/path/admin/index.php):

<?php 
$ROOT = '../'; 
include '../header.php'; 
?>  

Файл 3 (/path/admin/test/magic.php):

<?php 
$ROOT = '../../'; 
include '../../header.php'; 
?>  
0

на основе Tom's answer я сделал комбинацию base url и PHP define (для меньшего набора текста).

Где-то в PHP:

define("HOST_BASE", "http://example.com/"); 

Затем в файле заголовка:

<base href="<?php echo HOST_BASE ?>"> 

Базовый тег был новым для меня, и я беспокоился о совместимости, но это, кажется, работает хорошо. Существует more info about it at MDN.

Смежные вопросы