2012-09-14 90 views
5

我有一個包含.css文件鏈接的header.php文件。如何使用包含文件的相對路徑,如.css

當我將header.php包含到不同文件夾中的另一個php文件中時,header.php中的.css文件href在新的php文件中不正確。

我應該如何解析.css href,所以我可以將header.php包含在任何文件夾中?

+0

爲什麼不使用相對於您的域的路徑,比如'/ styles/your.css' –

+1

在header.php文件中使用CSS的完整鏈接 – 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,那麼I需要包含config.php到header.php。正如我所說的header.php和新的php不在同一個文件夾中,新的php文件現在無法找到config.php而不是.css文件。這並不會讓事情變得更簡單。 –

+0

如果你的代碼在任何給定的目錄結構中都不知道「它在哪裏」,我不確定我能幫你。你不能將相對位置硬編碼到配置文件嗎? – discomatt

7

你有幾個選項,我已經試圖在這裏集會

基本href

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

它做什麼,是將所有的HREF指向特定的路徑。 有了這一套,你可以使用<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/上找到)。如果不是這種情況,我會直接建議,指定你的CSS包括相對於根文件夾:

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

如果這是否適用於你,試試這個:

在每一個頂級文檔需要header.php,添加一個$ ROOT變量,該變量指示頂層文檔的位置與根目錄的位置。例如:

$ROOT = './'; 

$ROOT = '../'; 

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

現在,在你的header.php文件,你可以使用:

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

這使您可以一個header.php文件,可用於任何相對路徑的任何頁面。

全部實施例

包含的文件(/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

相關問題