Apache、mod_rewrite 和符号链接/别名

Apache、mod_rewrite 和符号链接/别名

我尝试在访问我的网站时强制添加 www。我已将以下内容添加到我的网站配置文件中:

<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

您对如何使其与符号链接一起工作有什么建议吗?

答案1

Directory你遇到了 Apache 中和指令之间的差异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块中。

相关内容