Apache-2.2

在不使用符號連結的情況下在 Apache 中創建虛擬目錄的正確方法是什麼?

  • September 18, 2017

我來自 IIS,在那裡設置虛擬目錄非常容易。您只需右鍵點擊並添加一個指向您喜歡的任何路徑的“虛擬目錄”。查看站點時,此相對路徑會通過瀏覽器反映出來。

我如何用 Apache 完成同樣的事情?符號連結讓我害怕,因為刪除級聯。有沒有更好的方法在 Apache 中創建虛擬目錄?我正在使用 MAMP for Mac,它使用 apache2。

使用AliasApache 配置文件中的指令。

Alias /virtual-dir /var/www/foo

此外,rm -r不會遍歷符號連結,也不會級聯。

如果您將多個域指向同一個公共 html 目錄,並且實際內容位於公共 html(Web 根目錄)之外,則可以分兩步執行此操作:

  1. 重寫每個域的目錄,例如
<VirtualHost 127.0.0.1:80>
 ServerName host_one.ca
  RewriteEngine On
   RewriteRule "/?images(.*)" "/www/shared/host_one/images/$1" [NC]
</VirtualHost>
<VirtualHost 127.0.0.1:80>
 ServerName host_two.ca
  RewriteEngine On
   RewriteRule "/?images(.*)" "/www/shared/host_two/images/$1"
</VirtualHost>

2)然後添加符號連結(或者,別名)

ln -s /shared/host_one/images /www/html/images/host_one
ln -s /shared/host_two/images /www/html/images/host_two

小心點。可以通過 host_one 訪問 host_two 圖像: domain_one.ca/images/host_two/{filename}

除非您添加其他規則以刪除目前主機目錄中的任何內容。對於 host_one VirtualHost(我沒有確認此規則是否有效):

   # prevent showing content from other hosts
   RewriteRule "/?images/!(host_one/.*)" /404 [NC,L]

引用自:https://serverfault.com/questions/337513