阿帕契虛擬主機

阿帕契虛擬主機

我想做這個

<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 不一定反映其檔案系統層次結構,您就需要混合併匹配所有這些指令以獲得所需的效果。僅僅因為兩個指令在一種情況下可能表現相同,並不意味著它們在另一種情況下也會表現相同。

相關內容