我有一个在 Mac OS X Leopard 下运行的自编译版 Apache 2。它默认安装在 /usr/local/apache2 上,运行良好。
今天我想添加一个虚拟主机,这样我就可以用域名访问特定的文件夹http://binarytales.local
所以我添加了127.0.0.1 binarytales.local
,/etc/hosts
刷新了 DNS 缓存,然后,我可以通过该地址访问我的服务器。
我希望能够通过我新创建的本地域名访问我工作 Web 服务器中的子文件夹。因此我设置了以下 vhosts 文件
NameVirtualHost *:80
<VirtualHost *:80>
DocumentRoot /usr/local/apache2/htdocs
ServerName localhost
</VirtualHost>
<VirtualHost *:80>
DocumentRoot /usr/local/apache2/htdocs/ProjectX
ServerName binarytales.local
</VirtualHost>
浏览到localhost
运行正常,我获取了以前经常获取的文件。浏览到 时binarytales.local
出现内部服务器错误。
我做了一些调查,发现我已将 htdocs 设置为符号链接,/Users/me/Sites
因此我尝试将 vhost 设置为
<VirtualHost *:80>
DocumentRoot /Users/me/Sites/ProjectX
ServerName binarytales.local
</VirtualHost>
这也不起作用。现在我得到了Forbidden You don't have permission to access / on this server.
因此我尝试了一下DocumentRoot /Users/me/Sites
,但得到了同样的禁止信息。
最后我尝试了
DocumentRoot /usr/local/apache2/htdocs2 服务器名称 binarytales.local
/usr/local/apache2/htdocs2
的符号链接在哪里Users/me/Sites/ProjectX
?我也尝试了Users/me/Sites
。我得到了同样的“禁止”错误。
我检查了所有内容上的用户和组设置,除了“Users/me/Sites/”中的内容(即 me/wheel)外,其他内容均为 root/wheel。所有主管对每个人都是 chmod -x。
我完全陷入困境,不知道下一步该做什么!
我的问题标题很糟糕。请将其更改为/建议更好的内容。
答案1
好的,大约 5 分钟后我修复了这个问题,方法是:
<Directory "/usr/local/apache2/htdocs/Binarytales">
Options Indexes FollowSymLinks
AllowOverride All
Order allow,deny
Allow from all
</Directory>
在我的虚拟主机声明中。所以最后它读起来像这样:
名称虚拟主机 *:80
<VirtualHost *:80>
DocumentRoot /usr/local/apache2/htdocs
ServerName localhost
</VirtualHost>
<VirtualHost *:80>
DocumentRoot /usr/local/apache2/htdocs/Binarytales
ServerName binarytales.local
<Directory "/usr/local/apache2/htdocs/Binarytales">
Options Indexes FollowSymLinks
AllowOverride All
Order allow,deny
Allow from all
</Directory>
</VirtualHost>
我认为这里有神奇的功效,Options ... FollowSymLinks
但如果有人能很好地解释为什么它有效,请告诉我,或者是否有更好/替代的解决方案。
答案2
我会bind
先尝试安装。假设它在 Mac OS X 上可以像在 Linux 上一样工作:
mount --bind /path/one /path/two