我尝试在访问我的网站时强制添加 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
块中。