2011-05-12 111 views
0

我已經下載了一個完整的網站,將爲客戶升級。
我注意到代碼無法找到文件(CSS,JS,圖像等)。 路徑編碼像這樣—在開頭/正斜槓。 從每個href,src或其他任何地方開始刪除/
解決了本地計算機上的問題,但當然會在網上混淆視聽。php本地機器路徑

這不會在本地工作:

href="/design/layout.css" 

這將(第一個斜線刪除)

href="design/layout.css" 

什麼是造成這種差異的原因嗎? 是否有需要配置的某種系統變量以便讓兩臺服務器以相同的方式處理路徑?

回答

3

如果在相對URL的開頭有一個/,那麼它將被解析爲域的Web根目錄的絕對路徑。

實施例絕對路徑(有/開頭):

在domain.com/test/other/path/test.html
href="/design/layout.css"文件

- >瀏覽器搜索在domain.com/design/layout.css

在域中的文件/的test.html
href="/design/layout.css" - >瀏覽器搜索在domain.com/design/layout.css

結論ABSOLU te路徑
瀏覽器在同一地點搜索兩次。

實施例的相對路徑(無/開頭):

在domain.com/test/other/path/test.html
href="design/layout.css"文件

- >瀏覽器搜索在domain.com/test/other/path/design/layout.css

在域中的文件/的test.html
href="design/layout.css" - >瀏覽器搜索在domain.com/design/layout.css

結束語相對路徑
瀏覽器在不同地方搜索。


解決方案

您可以添加在你的.htaccess或.conf文件一Apache Alias,請求第一路徑時,這會強制服務器輸出的第二路徑的內容。在你的情況下,Apache輸出來自新路徑的CSS文件,而不是/ design/。Apache的別名

Alias /design /your/new/path/design 
+0

非常感謝你 – samoyed 2011-05-13 07:14:34