通过 VirtualBox,我需要通过客户操作系统(Windows XP 和 7)访问主机(Mac OS X 10.6)的虚拟主机。
我可以访问该localhost
URL,并且可以~/Username/Sites
通过主机(我的 Mac)的本地 URL 在客户机浏览器中从客户机操作系统查看文件夹的目录结构,但是当我尝试深入了解文件结构时出现 403 错误,例如,可以访问,但当我浏览到 时mymacsname.lcoal/~Username/Sites
出现。403
ymacsname.lcoal/~Username/Sites/somewebsite/
403
注意:当我尝试ymacsname.lcoal/~Username/Sites/somewebsite/
从我的 Mac(主机)的浏览器访问时也会出现此问题。
编辑:
我检查了主机操作系统 (Mac) 上的访问日志,奇怪的是,如果我浏览一个没有文件的目录,.htaccess
我会收到"HTTP/1.1" 200 1935
响应,并且可以浏览该目录的索引或访问其默认网页。如果.htaccess
目录中有文件,我会收到"HTTP/1.1 403 247"
响应!
这将很多问题缩小到.htaccess
文件上,所以我会继续研究这个问题,非常感谢您的帮助!
重新编辑
进一步说,这似乎是我.htaccess
的mod_rewrite
规则的问题。我在下面包含了我的.htaccess
代码,看起来,就像应该的那样,它将浏览器重定向到/Users/Jay/Sites/chassis/library/bootstrap.php
但似乎我没有访问该文件的权限(bootstrap.php
)。
Options +FollowSymLinks
RewriteEngine On
RewriteCond %{DOCUMENT_ROOT}/public/index.html !-f
RewriteRule ^$ library/bootstrap.php [L]
RewriteRule ^$ public/index.html [L]
RewriteRule ^([a-z0-9/-]+)$ library/bootstrap.php?url=$1 [L,QSA]
太接近了!请帮我解决这个问题!
重新编辑
如果有帮助的话,下面是我的主 Apache 配置文件的一个片段(/private/etc/apache2/httpd.conf
):
<Directory />
Options FollowSymLinks
AllowOverride None
Order deny,allow
Deny from all
</Directory>
答案1
您可能希望首先检查 Web 服务器的访问日志,看看实际传递了什么信息 - 成功和失败。
答案2
这肯定是权限问题。
解决了通过增加:
<Directory />
Options +FollowSymLinks
AllowOverride All
Order allow,deny
Allow from all
</Directory>
到/private/etc/apache2/extra/httpd-vhosts.conf
。
我还需要像这样编辑客户操作系统(Windows XP 和 7)上的 hosts 文件:
192.168.123.123 somevhost
192.168.123.123 someothervhost.dev
其中,所述的 IP 地址是主机操作系统的 IP 地址,somevhost
... 是主机操作系统上的虚拟主机的名称。
我需要将主机操作系统设置为使用静态 IP,就好像它是由 DHCP 分配的一样,每次主机操作系统的 IP 发生变化时,您都必须在客户操作系统上编辑主机文件。
这些网站确实很有帮助:
http://support.microsoft.com/kb/972034#LetMeFixItMyselfAlways
http://mark-kirby.co.uk/2008/setting-up-virtual-hosts-on-os-x-leopard/