2014-02-16 60 views
0

我使用mod_rewrite,現在的絕對路徑和我使用這個mod_rewrite的 - 文件夾

RewriteRule ^.+(css/.+)$ $1 [L] 
RewriteRule ^.+(js/.+)$ $1 [L] 
RewriteRule ^.+(img/.+)$ $1 [L] 
RewriteRule ^.+(fonts/.+)$ $1 [L] 
RewriteRule ^.+(swf/.+)$ $1 [L] 

現在我只寫CSS/cssfile.css和js IMG和東西和它的作品(甚至如果我不認爲這是正確的方式)

但無論如何,我有一個名爲功能與一些PHP文件的文件夾,我試圖使我與此作出相同的..但這沒有去偉大,我想要這個的原因是我想用include創建一個文件,所以我避免了不必要的做了幾行代碼。

有沒有人知道我在說什麼,也許有線索我該怎麼辦?

對不起壞explination(新mod_rewrite的),我試圖與任何良好的響應搜索..

+0

你能解釋一下你的「那沒去太大」是什麼意思?你試過的代碼是什麼,發生了什麼?我也不清楚你想做什麼,因爲PHP的'include'語句與'mod_rewrite'完全無關。 – IMSoP

+0

另一方面,這些規則只是爲了讓您可以在HTML中使用'href =「css/cssfile.css」'包含CSS文件等,但仍然從根目錄獲取它們?如果是這樣,爲什麼不直接使用'href =「/ css/cssfile.css」'?例如,這樣做會對瀏覽器緩存非常不利,因爲當您點擊該網站時,相同的CSS文件將出現在不同的URL處。 – IMSoP

+1

有了這段代碼,我只需要編寫css /文件,現在我想要的是函數映射,現在我在我的PHP文檔中有這樣的代碼:'../../../functions/connect_db.php '我真的希望它能像這樣工作:'functions/connect_db.php' – Tommy

回答

1

PHP的include聲明不能解決一個URL或要求的Apache的任何信息,所以mod_rewrite會不以任何方式影響其行爲。

您正在尋找的是一種定義文件相對於「文檔根」(映射到example.com/的目錄)而不是相對於當前文件的位置的方法。

爲此,您可以使用PHP變量$_SERVER['DOCUMENT_ROOT'],例如,

include $_SERVER['DOCUMENT_ROOT'] . '/functions/connect_db.php'; 

它也可能是一個想法,移動函數定義上述一個目錄文檔根,讓他們永遠不能被加載在自己的權利的URL。該功能dirname()給特定路徑的「父」目錄,所以你可能會改用:

include dirname($_SERVER['DOCUMENT_ROOT']) . '/functions/connect_db.php'; 
+0

啊謝謝!不知道! – Tommy