Linux
Apache、mod_rewrite 和符號連結/別名
我正在嘗試強制添加 www。如果訪問我的網站。我已將以下內容添加到我的站點 conf 文件中:
<Directory /var/www/main> Options FollowSymlinks RewriteEngine on RewriteCond %{HTTP_HOST} ^example\.com RewriteRule ^(.*)∞ http://www.example.com/$1 [L,R=permanent] </Directory>
訪問時效果很好
example.com
。但是,如果我創建一個符號連結
ln -s /path/to/somewhere foo
並嘗試訪問 example.com/foo 我不會被重定向到www.example.com/foo
這當然是預期的,因為/path/to/somewhere
不在/var/www/main
您對如何使其也適用於符號連結有任何建議嗎?
您在 Apache 中遇到了
Directory
和Location
指令之間的區別。根據文件,Directory
適用於文件系統空間,並Location
適用於網路空間。嘗試像這樣分解您的配置塊:<Directory /var/www/main> Options FollowSymLinks </Directory> <Location /> RewriteEngine on RewriteCond %{HTTP_HOST} ^example\.com RewriteRule ^(.*) http://www.example.com/$1 [L,R=permanent] </Location>
…換句話說,將重寫部分拉到一個
Location
塊中。