绑定域名后PHP MVC项目菜单跳转出现内部服务器错误求助
问题诊断与解决方案
核心问题
错误日志中的AH00124提示表明存在无限内部重定向循环,根源在于以下配置错误:
- 虚拟主机已将
DocumentRoot直接指向/var/www/html/project-1/public,根目录的.htaccess完全不会被Apache加载,属于冗余配置。 - 原
public目录的.htaccess中RewriteBase设置错误:当前域名直接映射到public目录,而非子路径/project-1/public,错误的路径导致重定向逻辑混乱。 - 后续修改
public目录的.htaccess时添加了重复重写规则,进一步触发循环。
分步修复
1. 清理根目录冗余配置
直接删除根目录的.htaccess文件(或注释所有内容),因为虚拟主机已将网站根路径指向public,该文件不再生效。
2. 修正public目录的.htaccess
替换为以下正确配置:
<IfModule mod_rewrite.c> Options -Multiviews RewriteEngine On # 域名直接指向public,RewriteBase设为根路径 RewriteBase / # 跳过真实存在的文件和目录 RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f # 转发所有请求到index.php并传递URL参数 RewriteRule ^(.+)$ index.php?url=$1 [QSA,L] </IfModule>
3. 验证配置并重启Apache
执行命令确保配置无语法错误,然后重启服务:
sudo apache2ctl configtest sudo systemctl restart apache2
额外检查
- 确认
mod_rewrite模块已启用:执行sudo a2enmod rewrite,若提示已启用则无需操作。 - 修正目录权限:确保Apache进程有权读取public目录,执行
sudo chown -R www-data:www-data /var/www/html/project-1/public。
内容的提问来源于stack exchange,提问作者Hkachhia
相关产品推荐
相关产品推荐

