我有一個包含.css文件鏈接的header.php文件。如何使用包含文件的相對路徑,如.css
當我將header.php包含到不同文件夾中的另一個php文件中時,header.php中的.css文件href在新的php文件中不正確。
我應該如何解析.css href,所以我可以將header.php包含在任何文件夾中?
我有一個包含.css文件鏈接的header.php文件。如何使用包含文件的相對路徑,如.css
當我將header.php包含到不同文件夾中的另一個php文件中時,header.php中的.css文件href在新的php文件中不正確。
我應該如何解析.css href,所以我可以將header.php包含在任何文件夾中?
像這樣:
<link rel="stylesheet" href="/css/style.css" />
第一/
說「去根目錄下,並從那裏看。」這是一條相對路徑。
寫CSS文件,如絕對路徑:
<link href="http://site.com/css/style.css" />
這是一個原因,許多大型應用程序會嘗試安裝時設置了「根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">';
如果我將絕對URI存儲到config.php,那麼I需要包含config.php到header.php。正如我所說的header.php和新的php不在同一個文件夾中,新的php文件現在無法找到config.php而不是.css文件。這並不會讓事情變得更簡單。 –
如果你的代碼在任何給定的目錄結構中都不知道「它在哪裏」,我不確定我能幫你。你不能將相對位置硬編碼到配置文件嗎? – discomatt
你有幾個選項,我已經試圖在這裏集會
基本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' />
我可以看到一個原因,希望有動態和相對路徑生成的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';
?>
基於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。
爲什麼不使用相對於您的域的路徑,比如'/ styles/your.css' –
在header.php文件中使用CSS的完整鏈接 – Adsy2010