2013-03-03 119 views
1

我是新來的PHP,並明白,這是一個相當普遍的問題。我已經通過網絡閱讀了很多相關的問題,但是在堆棧溢出中我還沒有成功實現它們。如何正確引用css文件幷包含在php項目中?

我有一個目錄結構像這樣一個項目:

Project/ 
    includes/ 
       header.php 
       footer.php 
       sidebar.php 
    css/ 
       style.css 
    index.php 
    blog/ 
       index.php 

在在我拉在根部的index.php包括像這樣:

include 'includes/header.php'; 

並在CSS文件header.php像這樣:

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

現在這個工作在index.php文件的根目錄和任何其他文件pl在根之內。然而,它打破了一個子文件夾中的所有頁面,例如博客/ index.php

我的主要問題是我如何正確引用我的CSS文件和我的包含在一個項目中,以便文件可以訪問到二級頁面以及?

注:
- 我的工作在本地服務器
上 - 所有的項目文件都包含在根目錄中的項目文件夾內 - (本地主機:8888 /項目/的index.php)

任何幫助將非常感謝。

謝謝。

回答

1

您需要通過應用程序的根目錄來引用它。使用以下選項

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

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


include $_SERVER['DOCUMENT_ROOT'].'/includes/header.php'; 

您目前擁有它的方式不適用於您的域名根之外的任何文件。它在做什麼是以下。

您位於http://example.com/,並且您的網站包含css/style.css,因此它將附加到該域。在根層面,這很好。現在如果你在http://example.com/myFile/andFolder它仍然附加到域,如果你不包括領先的斜線......所以現在它正在尋找你的風格http://example.com/myFile/andFolder/css/style.css。添加前導斜槓告訴服務器,我想在我的域的根目錄中查找這個。

我的第二個選項是<link rel....,兩個//之前的域名只是一個快速的方式來通過https://託管它,如果這是當前頁面的位置。

+0

嗨小靈通,感謝您提供您的建議。似乎在鏈接到css文件之前添加一個斜槓不起作用。當我這樣做時,它不會引用它。說了你的第二種方法正在工作,但在這種情況下,我將不得不在每個鏈接中對路徑進行硬編碼。我正在尋找一個更具可擴展性的方法,所以現在我定義了MIIB建議的基礎URL。有效。感謝您的幫助。 – ghosh 2013-03-03 09:44:48

0

最簡單的方法,但不是最好的辦法是,你總是可以鏈接到絕對路徑:(我不推薦)

<link rel="stylesheet" href="http://localhost/Project/css/style.css"> 

最好是有一個具有BASE_URL可變的配置文件,始終鏈接你的CSS和其他的東西通過base_url;

+0

如果這樣做,我會設置它不是一個變量,而是一個常量,它在應用程序中首先被定義。這樣使用'DEFINE('BASE_URL','')'你可以確信'BASE_URL'永遠不會被覆蓋。 – bretterer 2013-03-03 08:13:48

+0

目前,我在我的頭文件'中包含了這個h​​tml標籤。這解決了鏈接到樣式表的問題。 – ghosh 2013-03-03 09:52:43

相關問題