2015-08-20 102 views
0

工作我添加了一個javascript文件到我的網頁上是這樣的:src屬性只能用相對路徑

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

這工作得很好。然而,我又試圖相對路徑更改爲絕對路徑,像這樣:

<script type="text/javascript" 
     src="/home/name/domains/domain.com/public_html/js/filename.js"></script> 

這將導致該服務器具有404 (Not Found)響應狀態。

我相當肯定這是這個文件的正確絕對路徑,因爲使用require_once()導入一個特定的php文件,其絕對路徑非常相似,沒有問題。實際上,PHP函數realpath("../../js/filename.js")產生"/home/name/domains/domain.com/public_html/js/filename.js"

我在做什麼錯?

回答

3

的關鍵點是,<script>標籤interpretd 客戶端而PHP的包括被解釋服務器側

服務器端,路徑將是相對於你的文件系統(即絕對或相對於當前目錄)

客戶端(=瀏覽器端),路徑將是相對於當前頁面的URL。

如果當前頁面是: http://domain:port/page.php

您的瀏覽器試圖加載http://domain:port/home/name/domains/domain.com/public_html/js/filename.js

裏面有很多機會不是在你的服務器服務。

您的服務器的「根」目錄似乎是/home/name/domains/domain.com/public_html

所以 「絕對路徑」,從客戶端來看,你的JS文件,應該是:

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

+0

當然。謝謝 :) –

0

試試這個:

<script type="text/javascript" src="<?php echo $_SERVER['DOCUMENT_ROOT']; ?>/js/filename.js"></script> 

我不明白這一點在使用絕對路徑的工作。你應該讓你的代碼更具動態性。

1

您不應該需要服務器存儲您的信息的完整路徑。你的Apache,Nginx等配置會照顧爲你創建根目錄,然後你需要基於此。

嘗試改變:

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

到:

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

這將對尋找根目錄的絕對路徑中的文件夾/js的代碼。我認爲你已經將代碼存儲在根目錄中,但很難說沒有看到你的目錄樹。