嘗試配置apache2以從相對於站點根目錄的不同文檔根加載example.com/forum/。論壇安裝在服務器的其他地方。如何爲自定義目錄配置apache?
是否有一個目錄別名命令?我發現了Apache的alias
配置條目,但沒有運氣。
基本上,我希望example.com擁有其始終擁有的相同目錄,但example.com/forum/將在同一臺服務器上的其他位置託管。
我用mod_rewrite標記了這個問題,因爲我想也許這將是關鍵,在這裏。
乾杯!
嘗試配置apache2以從相對於站點根目錄的不同文檔根加載example.com/forum/。論壇安裝在服務器的其他地方。如何爲自定義目錄配置apache?
是否有一個目錄別名命令?我發現了Apache的alias
配置條目,但沒有運氣。
基本上,我希望example.com擁有其始終擁有的相同目錄,但example.com/forum/將在同一臺服務器上的其他位置託管。
我用mod_rewrite標記了這個問題,因爲我想也許這將是關鍵,在這裏。
乾杯!
Alias
是正確的方式,除非你有一些微妙的東西,你沒有透露你的問題。
# http.conf
Alias /forum /usr/lib/bbs/ # or whatever
的Alias
的工作就是要把抽象的網址進入您的系統,並將其映射到一個具體的文件系統路徑。一旦完成,請求不再是一個URL,而是一個路徑。如果沒有Alias
或處理該URL的類似指令,則它將通過DocumentRoot
映射到對應路徑。
如果這不起作用,您必須進一步調試它。當您訪問/forum
時,您是否遇到錯誤?查看錯誤日誌。
這一切都取決於你想要的。你可以用真正的路徑「硬鏈接」,它可以工作(所以你認爲它可以與mod_rewrite一起工作)。
快速樣品(這在我的生產領域的作品),使內部的變化(我添加了一個子目錄):
RewriteRule (.*) %{DOCUMENT_ROOT}/mysubfolder%{REQUEST_FILENAME} [QSA,L]
所以,你可以很容易地做一些事情,如:
RewriteRule ^/forum/(.*) %{DOCUMENT_ROOT}/mysubfolder%{REQUEST_FILENAME} [QSA,L]
和我建議是,如果你打算有更多的重寫規則,保持一切均勻,即:繼續使用只有重寫規則,所以請使用我上面的建議。通過這種方式,您不會得到Alias
,RewriteRule
s等的錯誤組合。對於漂亮而乾淨的東西:保持一切均勻。
這是無稽之談。 'Alias'和'RewriteRule'做了不同的事情,這兩個都適用於URL處理的不同階段,並且發生在相同的服務器配置中。 'Alias'將一個URL映射到一個目錄(並且不會遞歸:'Alias'的結果不會被重新注入以進行重新處理)。它是將頂級URL重定向到服務器上實現的各種應用程序區域的正確工具。如果你不使用'Alias'而只使用'RewriteRule',那麼你可以得到一個糟糕的'RewriteRule'-s混合體。 – Kaz 2012-03-12 16:11:04
切勿在程序中同時使用數組和列表。保持它的均勻性,以便沒有混合不良。另外,不要在具有浮點數的程序中使用整數,反之亦然。僅使用函數或僅使用宏並堅持一個範例:例如如果有函數式編程,不要使用對象。清潔和同質化是目標;完成工作只是一個受歡迎的副作用。 – Kaz 2012-03-12 18:27:19
您的第一條評論就夠了,謝謝您的建議。但是,如果你使用'Alias/forum/usr/lib/bbs /',請告訴我,在RewriteRule中,像'RewriteRule(。*)/ forum'這樣的東西將永遠不會被更改爲'/usr/lib目錄/ BBS /'。 – 2012-03-13 08:09:48
P.S.這是非常常見的。也許運行Apache的用戶有一些應用程序設置了位於文檔根目錄之外的位置,例如網絡郵件等。 – Kaz 2012-03-11 23:40:25
謝謝你的幫助。我在解釋別名文檔時遇到了麻煩。我一定會將此傳遞給與我一起工作的任何人。 – dmanexe 2012-03-12 17:44:06