Mod-Rewrite
使用 Apache2 從同一個 URL 為 Web 根目錄之外的多個目錄提供服務
是否可以將 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>