2014-11-05 49 views
0

我有一個文件夾,其中包含各種文件夾中的HTML,CSS,JS,圖像文件。出於安全原因,我想將它放在Web根目錄之外。從外部web根目錄在Apache服務器上運行一個Html文件

我遇到了使用PHP的file_get_contents函數的解決方案。

但是,在頁面中存在超鏈接存在問題。例如,鏈接到JavaScript文件中的頁面:在http://localhost/lms/APIConstants.js

<script src="lms/APIConstants.js" type="text/javascript"></script> 

搜索文件,並返回

Failed to load resource: the server responded with a status of 404 (Not Found) 
http://localhost/lms/APIConstants.js 

錯誤我知道使用.htaccess文件的隱藏一些文件夾從web根目錄。我正在尋找其他有見解的解決方案。

+0

然後讓它成爲一個完整的url – 2014-11-05 06:29:27

+0

這可能會幫助你http://stackoverflow.com/questions/13550471/php-include-file-in-webroot-from-file-outside-webroot – Chella 2014-11-05 06:33:56

+0

我不能那樣做,這個HTML,CSS,JS文件是自動生成的。 – Aniruddha 2014-11-05 06:34:03

回答

1

終於解決了這個問題..可能對別人有幫助。

的步驟,隨訪:

  • 使用一個單獨的文件從外部Web根目錄讀取(說filereader.php)。
  • 使用編碼本地文件路徑的URL調用此文件。 http://localhost.ca/lms/filereader.php/path/to/local/file.html
  • 解析URL,以獲取路徑 - /path/to/local/file.html
  • 應用PHP的readfile()功能所獲得的路徑來讀取。

這樣做,file.html中的所有超鏈接從以下路徑加載。

http://localhost.ca/lms/filereader.php/path/to/local/

MIME類型的每個文件具有被定義。當找不到文件時,也會使用PHP的http_response_code()引發正確的http響應代碼。

注意:您可能需要在Apache配置中啓用AcceptPathInfo

+1

確保只有某些文件可以從filereader讀取。否則,可以使用簡單的獲取請求來讀取諸如日誌之類的文件,這可能存在安全風險。 – cnvzmxcvmcx 2014-11-12 15:27:25

0

當你包含一個文件時,代碼/腳本根據它所包含的新路徑運行。

它找到APIConstants.js文件到文件夾Ims它位於根目錄中。 但實際上它位於根目錄之外。

所以給出這樣的路徑。如果Ims文件夾是一步到根目錄。

src="../lms/APIConstants.js" 
相關問題