Docker容器部署Apache PHP应用启用.htaccess重写规则报内部服务器错误
问题原因排查与解决方案
1. 修复.htaccess语法错误
你的.htaccess文件中RewriteCond %{REQUEST_FILENAME} !-f 行末尾多了无效的ls字符,属于重写规则语法错误,是触发500内部服务器错误的直接原因。
修正后的.htaccess内容如下:
<IfModule mod_rewrite.c> RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^ index.php [QSA,L] </IfModule>
2. 修正Apache虚拟主机配置
你当前的虚拟主机配置仅开放了目录访问权限,没有开启.htaccess文件读取权限,Apache默认会忽略站点目录下的.htaccess文件,需要在Directory配置段添加AllowOverride All指令:
修正后的default.conf内容:
<Directory /var/www/html> Require all granted AllowOverride All </Directory>
建议将路径精准匹配到站点根目录/var/www/html,避免不必要的权限开放
3. 验证配置生效
修改完成后可先进入容器执行Apache配置语法检测命令,确认配置无错误:docker exec -it php_apache apache2ctl configtest
输出Syntax OK就代表配置正常,重启PHP容器即可生效:docker-compose restart php
内容的提问来源于stack exchange,提问作者Muhammad Ibrahim
相关产品推荐
相关产品推荐

