Mod-Rewrite

使用 Apache2 從同一個 URL 為 Web 根目錄之外的多個目錄提供服務

  • December 12, 2020

是否可以將 Apache 設置為從同一個 URL 提供多個目錄?

例如,假設我在兩個位置有圖像:/mnt/imagestore1、/mnt/imagestore2。我希望 mysite.com/images/file.jpg 顯示任一目錄中的圖像。

它似乎不適用於這樣的別名:

Alias /images /mnt/imagestore1
Alias /images /mnt/imagestore2

並且在文件根目錄中使用帶有 .htaccess 的 mod_rewrite 也沒有奏效,儘管我對 mod_rewrite 的理解可能不在這裡:

RewriteCond /mnt/imagestore1/%{REQUEST_URI} -f
RewriteRule ^(.+) /mnt/imagestore1/$1 [L]
RewriteCond /mnt/imagestore2/%{REQUEST_URI} -f
RewriteRule ^(.+) /mnt/imagestore2/$1 [L]

我已經通過 mod_rewrite 解決了這個問題。我直接更新了虛擬主機配置,而不是使用.htaccess文件。我相信它可以通過,.htaccess但我的重寫規則有點偏離(注意缺少/)。還需要<Directory>為圖像目錄添加聲明(以允許訪問)。

虛擬主機如下所示:

DocumentRoot /var/www/html
<Directory /var/www/html>
 Order allow,deny
 Allow from all
</Directory>

RewriteEngine on

RewriteCond "/mnt/imagestore1%{REQUEST_URI}" -f [OR]
RewriteCond "/mnt/imagestore1%{REQUEST_URI}" -d
RewriteRule ^/?(.*)$ /mnt/imagestore1/$1 [L]

RewriteCond "/mnt/imagestore2%{REQUEST_URI}" -f [OR]
RewriteCond "/mnt/imagestore2%{REQUEST_URI}" -d
RewriteRule ^/?(.*)$ /mnt/imagestore1/$1 [L]

<Directory /mnt/imagestore1>
 Order allow,deny
 Allow from all
</Directory>

<Directory /mnt/imagestore2>
 Order allow,deny
 Allow from all
</Directory>

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