Apache部署Laravel API遇内部服务器错误,.htaccess标签不匹配求助
问题根源
你的.htaccess文件存在语法错误:第一个<IfModule mod_rewrite.c>标签已闭合,但文件末尾又多出一个无对应开头的</IfModule>,导致标签不匹配;同时,该.htaccess位于public目录下,开头的RewriteCond %{REQUEST_URI} !^public和RewriteRule ^(.*)$ public/$1 [L]规则完全多余,会引发请求路径混乱。
修复步骤
1. 替换正确的public目录.htaccess代码
将C:/Apache24/htdocs/ErenA/public/.htaccess的内容替换为以下标准Laravel配置,确保标签配对且规则正确:
<IfModule mod_rewrite.c> RewriteEngine On # Handle Authorization Header RewriteCond %{HTTP:Authorization} . RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}] # Redirect Trailing Slashes If Not A Folder... RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_URI} (.+)/$ RewriteRule ^ %1 [L,R=301] # Send Requests To Front Controller... RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^ index.php [L] </IfModule>
2. 启用Apache mod_rewrite模块
打开httpd.conf文件,找到以下行并移除开头的#注释:
#LoadModule rewrite_module modules/mod_rewrite.so
修改后:
LoadModule rewrite_module modules/mod_rewrite.so
3. 验证站点目录配置
确保httpd.conf中针对C:/Apache24/htdocs/ErenA/public的目录配置块正确设置了权限:
<Directory "C:/Apache24/htdocs/ErenA/public"> AllowOverride All Require all granted </Directory>
4. 重启Apache服务
所有配置修改完成后,必须重启Apache服务才能生效。
额外检查
- 确保Laravel项目的
storage和bootstrap/cache目录拥有读写权限,这两个目录权限不足也会引发500错误。 - 测试时使用浏览器无痕模式,避免301重定向缓存干扰结果。
内容的提问来源于stack exchange,提问作者rnlsn
相关产品推荐
相关产品推荐

