本地服务器-Apache 将所有请求重定向至 /index.php

本地服务器-Apache 将所有请求重定向至 /index.php

我的本地服务器出现了奇怪的重定向问题。我设置了一个 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不应带尾部斜杠。

相关内容