我想做這個
<VirtualHost *>
ServerName myDomain.com
DocumentRoot /var/www/myDomain
<Directory /var/www/myDomain>
Rewrite on
RewriteRule ^blog/(.*)$ /var/www/myBlog/$1 [L]
</Directory>
</VirtualHost>
所以 http://www.myDomain.com/blog/將從不同的目錄讀取檔案。上面的方法不起作用,那麼我怎麼能在不移動文件的情況下做到這一點呢?
答案1
無需為此使用 mod_rewrite。 別名更適合。
# Alias: Maps web paths into filesystem paths and is used to
# access content that does not live under the DocumentRoot.
Alias /blog /var/www/myBlog
如果您只想更改部落格的設置,請添加位置指令。
<Location /blog>
Allowoverride All
</Location>
答案2
像這樣做:
<VirtualHost *>
ServerName myDomain.com
DocumentRoot /var/www/myDomain
Alias /blog/ /var/www/myBlog/
</VirtualHost>
答案3
Location
標籤只是 Apache 指令的通用容器,因此使用它來「包裝」您想要套用於網站「外部視圖」部分的任何內容。如果您要將多個實體目錄中的內容拉入一個更大的結構,則非常有用,您可以將同一組規則套用至所有目錄,而不是擁有多個Directory
項目
Alias
指令是一個簡單的重定向,非常適合顯示為短而整齊的指標的長路徑。
DocumentRoot
指令設定頂級 Web 內容目錄。
它們都處理目錄,但它們都有點不同。位置主要用於處理我所說的「網路視圖」——它如何從外部可見。目錄是處理檔案系統上實際目錄的「實體視圖」。如果一個目錄的內容是作為一個 URL 提供,那麼它們之間不存在功能差異。
然而,一旦您開始「組合」多個目錄,並從多個 URL 中提供它們,而這些 URL 不一定反映其檔案系統層次結構,您就需要混合併匹配所有這些指令以獲得所需的效果。僅僅因為兩個指令在一種情況下可能表現相同,並不意味著它們在另一種情況下也會表現相同。