Linux

Apache、mod_rewrite 和符號連結/別名

  • September 23, 2010

我正在嘗試強制添加 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 中遇到了DirectoryLocation指令之間的區別。根據文件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塊中。

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