我可能會問一個非常愚蠢的問題,但我無法找到一種方法去做我想做的事。將子目錄作爲apache的根目錄處理
我想在http://example.com/MyNewProject
項目上傳到我的服務器在每個網頁上的I包括文件,做所有的進口樣式表中,JavaScript的等等。我不想向客戶提供全方位路徑每次我只想要能夠做/MyStylesheet.css
我的主要網站文檔根目錄是/var/www/html/example
,我的新項目目錄存儲在/var/www/html/example/MyNewProject
。
我想要的是在我的導入中,當我做/MyStylesheet.css
而不是去我的服務器主Web目錄時,它會去/ var/www/html/example/MyNewProject以獲取CSS。
我嘗試添加以下到我的Apache的配置文件:
Alias /NewProjectTemplate "/var/www/html/example/NewProjectTemplate"
Alias /NewPRojectTemplate/ "/var/www/html/example/NewProjectTemplate"
<Directory "/var/www/html/example/NewProjectTemplate">
Options Indexes FollowSymLinks Includes
AllowOverride All
XBitHack On
Order allow,deny
Allow from all
</Directory>
這不幸的是沒有工作,所以我也嘗試添加以下到我的virtualhosts文件
<VirtualHost *:80>
DocumentRoot /var/www/html/example/NewProjectTemplate
ServerName example.com/NewProjectTemplate
</VirtualHost>
我在Google上瀏覽過,但找不到任何具體的東西,我發現的唯一的東西是使用重寫引擎,但這看起來有些複雜,OTT滿足我的需求。
感謝您提供的任何幫助。
UPDATE
OK,我得遠一點,雖然不是很多,我敢肯定,它不應該是這個複雜的。
而不是使用虛擬主機,我現在使用別名以下是我已經添加到我的httpd.conf文件
DocumentRoot "/var/www/html"
Alias /NewTemp/ "/var/www/html/example/NewProjectTemplate/"
Alias /NewTemp "/var/www/html/example/NewProjectTemplate"
<Directory "/var/www/html/example/NewProjectTemplate/">
Options FollowSymLinks Includes
AllowOverride all
</Directory>
<Directory "/var/www/html/example/NewProjectTemplate">
Options FollowSymLinks Includes
AllowOverride all
</Directory>
在我的HTML代碼在我的SSI我做以下內容:
<!--#include file="includes/imports.html"-->
正如您所看到的,這是一個相對路徑,Includes包含在NewProjectTemplate的根目錄中。但是,這是一個模板文件,所以我希望它始終能夠到根目錄來查找該文件,因此無論網站有多深入,它都能保證正常工作。例如,如果我行更改爲下面的話,我得到一個錯誤error processing directive
<!--#include file="/includes/imports.html"-->
所以即使作品,未經/但不與斜線,如果我不包括斜線所以然後該導入工作,imports.html文件內的導入工作,即使它們包含前導斜槓,因此它始終會轉到根目錄。下面是我的HTML文件,進口
<link rel="stylesheet" type="text/css" href="/StyleSheet.css">
<link rel="stylesheet" type="text/css" href="/navigation/top-nav.css">
<link rel="stylesheet" type="text/css" href="/navigation/side-nav.css">
<script type="text/javascript" src="/scripts/jquery.js"></script>
<script type="text/javascript" src="/scripts/menu.js"></script>
所以我只想澄清,如果將#include文件= includes/imports.html
的SSI指令作品和/StyleSheet.css導入成功,即使它擁有領先的斜線。如果我添加一個/到SSI的路徑,那麼它不會被導入。
但是,這裏是它變得更加怪異的地方。
如果我然後將另一個文件添加到子目錄中,例如NewProjectTemplate/MySubDirectory
,然後添加SSI爲../includes/imports.html它仍然無法正常工作。它就像#include文件中的SSI指令一樣,期望該文件位於相同的工作目錄中。
希望這是有道理的
在我們的PHP代碼中,我們創建了一個分析當前URL的環境目標,並基於URL中的子目錄,決定了我們的「baseWebPath」。這是基於模板的解決方案的基礎,無論腳本的位置如何,我們都可以使用相同的相對路徑包含我們的javascript和css,例如「javascript/myscript.js」。據推測,你正試圖避免像「../javascript/myscript.js」和「../../javascript/myscript.js」之類的引用。我的建議是採用基於PHP的方法,而不是試圖找到基於Apache的解決方案。 – Steven 2014-09-05 17:15:15