2014-09-21 227 views
1

我有以下目錄結構的PHP項目:相對路徑文件

ROOT 
    - PUBLIC 
     - CSS 
     - JS 
    - LIB 
     - CONTROLLER 

所有基本的PHP頁面都是公開的文件夾下位於同時所有的控制器,模型等位於LIB或下CONTROLLER文件夾。在某些情況下,控制器完成處理後,它將包含PUBLIC文件夾中要顯示的文件。我注意到包含的文件找不到關聯的CSS或JS文件,因爲它現在使用/LIB/CONTROLLER的相對路徑。

我的問題:

  1. 是否有某種方式來設置包含的文件不同的相對路徑,而不必修改每一個CSS或JS包括線?

  2. 如果我轉發使用header (Location...)的控制,但在某些情況下,我不喜歡這樣做,只是包括頁面不會發生此問題 - 因爲我將不得不從控制器傳遞重物使用會話頁面。有沒有更好的方法來實現這一目標?

+1

查看HTML5的'' – 2014-09-21 22:51:36

+0

偉大的答案 - 你可以請提交作爲答案,所以我可以接受 – ChicagoSky 2014-09-21 23:05:21

+0

謝謝。我不認爲這是必要的,''在其他地方有很好的記錄。 – 2014-09-21 23:41:44

回答

1

正如@Jack T所回答的 - 解決這個問題的方法是在包含的PHP/HTML頁面中定義<base>元素。有一件事我學到的是,定義元素時使用完整的URL包括http://

這解決了我面臨的問題

0

使用這樣的事情在您所有的PHP文件:

如果(沒有定義PATH_TO_ROOT) 定義PATH_TO_ROOT = ''

所以,在你的鏈接之類的東西,總是讓網址與該常數,像這樣:

URL = PATH_TO_ROOT '/公/ CSS/mycss.css'。

**請注意,這只是一個僞代碼,而不是實際的PHP代碼。

+0

我其實有這個,但我將不得不包括這爲每一個CSS文件或JS文件 - 有沒有更好的選擇?我所希望的是,當我包含文件時,有一種方法可以爲包含文件定義相對路徑。但也許這只是一廂情願的想法 – ChicagoSky 2014-09-21 22:47:46

+0

那麼,我想你可以做一個函數,檢查$ _SERVER來查看請求的位置。該函數接收css rel路徑並從那裏計算。但我不認爲這不是一種神奇的方式。 – 2014-09-21 22:51:03

0

/使用/絕對/路徑/到處/上/你/網站

做/不/使用/相對/那些
^看,沒有/slash,不是好的做法。