【发布时间】:2018-10-30 14:03:39
【问题描述】:
我正在尝试使用 Apache Web 服务器 (v2.4) 将 PHP 应用程序从 Windows IIS 移植到 Linux (Debian)。我成功地将我的文档根更改为/code/wwwroot,并使用配置文件/etc/apache2/sites-available/000-default.conf 而不是.htaccess 进行配置(在Apache 2.4 文档中,如果您有权访问,则使用/etc/apache2/sites-available 中的配置文件服务器配置文件,我这样做)。这是我用于配置的内容:
<VirtualHost *:80>
ServerAdmin webmaster@localhost
DocumentRoot /code/wwwroot
<Directory /code/wwwroot>
Options Indexes FollowSymLinks
AllowOverride None
FallbackResource /start.php
</Directory>
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
这几乎完全符合我的预期。当请求在/code/wwwroot/ 中找到的文件时,它们会被提供。如果请求的文件/路径不存在,则运行并返回start.php。例如,如果我的请求是localhost/gadgasd.html 等,它会在内部重定向到start.php。但是,对于文档根目录中不存在的具有.php 扩展名的文件,我得到的是 404。例如,如果请求是localhost/gadgasd.php,我会直接从 Apache 获得 404(我希望在我的代码中而不是 Apache 中处理 404)。此行为仅限于具有 .php 扩展名且在 Document Root 中不存在的文件。我对这种行为感到非常困惑。我已经设置了正确的包以将 php 与 apache (apt-get install -y php libapache2-mod-php) 一起使用,FallbackResource 规则适用于所有其他文件扩展名。我究竟做错了什么?提前致谢!
【问题讨论】:
标签: php linux apache php-7 apache2.4