2013-05-04 54 views
2

問題:重寫URL導致一些鏈接中斷。阿帕奇重寫URL創建鏈接問題

的.htaccess低於規則:

重寫規則^博客/([0-9] +)/ [ - 0-9A-ZA-Z] + $的index.php行動=博客&帖子ID?在報頭模板= $ 1 \%23disqus_thread [NC]

樣式表參考:

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

我可以點擊:

domain.com/blog/1/title-of-article,並獲得該文件就好了,但樣式表的鏈接斷裂

如果我直接去:

domain.com/index.php?行動=博客&帖子ID = 1#.UYV1mcqRiSo則樣式表加載罰款(忽略#.UYV1mcqRiSo,也就是從Disqus代碼)

這也打破了我的標誌的鏈接,這就是:

<a href="./"> 

而不是帶我去domain.com,它會domain.com/blog/1/

我的基本文件結構是:

的index.php和的style.css是在根,其中加載了viewPost.php在/模板文件夾。

這是怎麼回事?我如何糾正呢?

回答

2

最簡單的辦法:只需設置相對於域根你的鏈接,通過以斜線繞前他們(RESP取出點指的是當前文件夾中的鏈接。):

<link rel="stylesheet" type="text/css" href="/style.css" /> 
<a href="/">Logo</a> 
+0

謝謝。我選擇了你的答案,因爲它解決了我的問題。我還有一個額外的問題...現在,我改變了我的路徑從「./」到「/」鏈接在我的網站上正常工作,但是在本地主機上(在我的盒子上)它現在全部關閉。你有什麼建議? – TimNguyenBSM 2013-05-05 04:43:20

+0

那麼,這可能是因爲你的本地主機上沒有這個站點在根目錄下?您可以根據配置變量動態地使用PHP編寫路徑 - 或者,這就是我的建議,您可以設置一個單獨的VirtualHost指向項目所在的文件夾以及假本地域名(' Windows下的hosts文件),以便該項目可以直接在域根目錄下訪問。 (設置你的開發環境來模擬你的生活環境儘可能接近是一個好主意。) – CBroe 2013-05-05 17:03:59

+0

Ahh新手的錯誤。有我的httpd.conf文件中的路徑關閉。肯定會獲得開發和生產框匹配。感謝所有的幫助! – TimNguyenBSM 2013-05-06 17:34:23

4

1.關於樣式錶鏈接

你必須包括在你的.htaccess這些條件重寫規則之前:

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 

第一種意思是隻有當請求的URL爲而不是時,重寫規則才起作用,第二種方法對現有目錄也是如此。如果沒有這些條件,style.css的請求也會傳遞給您的index.php文件,而不會直接傳遞給style.css文件。

如果你有這些規則已經和它仍然不起作用,那麼問題是與URL路徑,見下文。

2.關於URL路徑

您使用您的聯繫相對URL,無論是在<a href="./">並在<link>標籤。在這種情況下,它們被解析爲URL的當前目錄(它無關緊要,它被重寫到相同的文件服務器端,路徑在客戶端準備好,並且每個用斜槓分隔的部分被視爲目錄。因此,如果當前URL是domain.com/blog/1/,./已解析爲domain.com/blog/1/。)style.css的路徑可能會解析爲domain.com/blog/1/ style.css。如果您希望這些鏈接的工作方式好像直接位於網址中的域名後面,則必須使用絕對網址,即/,而您的徽標上的鏈接不帶點; /style.css用於樣式錶鏈接。

+0

謝謝你的回答。雖然我選擇了另一個答案,但我從您的深思熟慮的答案和解釋中學到了東西。 – TimNguyenBSM 2013-05-05 04:44:36