2012-03-11 67 views
1

嘗試配置apache2以從相對於站點根目錄的不同文檔根加載example.com/forum/。論壇安裝在服務器的其他地方。如何爲自定義目錄配置apache?

是否有一個目錄別名命令?我發現了Apache的alias配置條目,但沒有運氣。

基本上,我希望example.com擁有其始終擁有的相同目錄,但example.com/forum/將在同一臺服務器上的其他位置託管。

我用mod_rewrite標記了這個問題,因爲我想也許這將是關鍵,在這裏。

乾杯!

回答

3

Alias是正確的方式,除非你有一些微妙的東西,你沒有透露你的問題。

# http.conf 
Alias /forum /usr/lib/bbs/ # or whatever 

Alias的工作就是要把抽象的網址進入您的系統,並將其映射到一個具體的文件系統路徑。一旦完成,請求不再是一個URL,而是一個路徑。如果沒有Alias或處理該URL的類似指令,則它將通過DocumentRoot映射到對應路徑。

如果這不起作用,您必須進一步調試它。當您訪問/forum時,您是否遇到錯誤?查看錯誤日誌。

+0

P.S.這是非常常見的。也許運行Apache的用戶有一些應用程序設置了位於文檔根目錄之外的位置,例如網絡郵件等。 – Kaz 2012-03-11 23:40:25

+0

謝謝你的幫助。我在解釋別名文檔時遇到了麻煩。我一定會將此傳遞給與我一起工作的任何人。 – dmanexe 2012-03-12 17:44:06

0

這一切都取決於你想要的。你可以用真正的路徑「硬鏈接」,它可以工作(所以你認爲它可以與mod_rewrite一起工作)。

快速樣品(這在我的生產領域的作品),使內部的變化(我添加了一個子目錄):

RewriteRule (.*) %{DOCUMENT_ROOT}/mysubfolder%{REQUEST_FILENAME} [QSA,L] 

所以,你可以很容易地做一些事情,如:

RewriteRule ^/forum/(.*) %{DOCUMENT_ROOT}/mysubfolder%{REQUEST_FILENAME} [QSA,L] 

和我建議是,如果你打算有更多的重寫規則,保持一切均勻,即:繼續使用只有重寫規則,所以請使用我上面的建議。通過這種方式,您不會得到Alias,RewriteRule s等的錯誤組合。對於漂亮而乾淨的東西:保持一切均勻。

+1

這是無稽之談。 'Alias'和'RewriteRule'做了不同的事情,這兩個都適用於URL處理的不同階段,並且發生在相同的服務器配置中。 'Alias'將一個URL映射到一個目錄(並且不會遞歸:'Alias'的結果不會被重新注入以進行重新處理)。它是將頂級URL重定向到服務器上實現的各種應用程序區域的正確工具。如果你不使用'Alias'而只使用'RewriteRule',那麼你可以得到一個糟糕的'RewriteRule'-s混合體。 – Kaz 2012-03-12 16:11:04

+0

切勿在程序中同時使用數組和列表。保持它的均勻性,以便沒有混合不良。另外,不要在具有浮點數的程序中使用整數,反之亦然。僅使用函數或僅使用宏並堅持一個範例:例如如果有函數式編程,不要使用對象。清潔和同質化是目標;完成工作只是一個受歡迎的副作用。 – Kaz 2012-03-12 18:27:19

+0

您的第一條評論就夠了,謝謝您的建議。但是,如果你使用'Alias/forum/usr/lib/bbs /',請告訴我,在RewriteRule中,像'RewriteRule(。*)/ forum'這樣的東西將永遠不會被更改爲'/usr/lib目錄/ BBS /'。 – 2012-03-13 08:09:48

相關問題