我的本地服务器出现了奇怪的重定向问题。我设置了一个 VirtualHost:
NameVirtualHost *:80
<VirtualHost *:80>
DocumentRoot "/Users/iMac/Sites/index.php"
ServerName jordan.local
ErrorLog "/private/var/log/apache2/jordan.local-error_log"
CustomLog "/private/var/log/apache2/jordan.local-access_log" common
<Directory "/Users/iMac/Sites/index.php">
AllowOverride All
Order allow,deny
Allow from all
</Directory>
</VirtualHost>
访问http://jordan.local
工作正常。但是,当我尝试访问子目录时jordan.local/somefolder/index.php
,显示的页面是jordan.local/index.php
。我没有 .htaccess 文件,并且已多次重新启动 apache。
Apache 版本:2.2.22 (Unix)
Mac OS X 10.7.5
如果有帮助的话,这是我的主机文件:
127.0.0.1 localhost
255.255.255.255 broadcasthost
::1 localhost
fe80::1%lo0 localhost
#74.208.10.249 gs.apple.com
127.0.0.1 jordan.local
我访问的所有本地 URL(不存在)都作为 200 响应代码显示在我的自定义访问日志中。
我的 Apache 错误日志给出了此警告:
Warning: DocumentRoot [/Users/iMac/Sites/index.php] does not exist
虽然/Users/iMac/Sites/index.php
是一条有效路径。
如果您需要更多信息,请告诉我。
答案1
请更改DocumentRoot
为指向目录,而不是文件。参考:http://httpd.apache.org/docs/2.2/mod/core.html#documentroot
文档根目录
指令描述:构成网络上可见的主文档树的目录
句法:
DocumentRoot directory-path
默认:
DocumentRoot /usr/local/apache/htdocs
语境:服务器配置,虚拟主机
地位: 核
模块: 核
httpd
此指令设置提供文件的目录。除非与 之类的指令匹配Alias
,否则服务器会将请求的 URL 中的路径附加到文档根目录以构成文档的路径。例子:
DocumentRoot /usr/web
那么对 的访问
http://www.my.host.com/index.html
指的是/usr/web/index.html
。如果目录路径不是绝对路径,则假定它是相对于 的ServerRoot
。指定时
DocumentRoot
不应带尾部斜杠。