Apache后端路由匹配失败:.htaccess规则不生效问题求助
解决.htaccess路由规则不匹配导致的404错误
你的问题核心是RewriteRule规则未匹配到带末尾斜杠的请求URL,同时ErrorDocument的二次报错是规则失效后的连带问题。以下是具体排查和修复方案:
问题原因
你当前的规则^api/login?$仅匹配两种情况:
/api/login(无末尾斜杠)/api/login?xxx(带查询参数)
但你实际请求的是/api/login/(带末尾斜杠),规则无法命中,直接触发404;而错误提示里的二次404,是Apache尝试处理ErrorDocument时的路径问题(只要错误页面路径正确即可解决)。
修复步骤
1. 修改RewriteRule规则,允许末尾斜杠
将所有API相关规则的结尾?$替换为/?$,让规则同时匹配带/不带末尾斜杠的请求。修改后的.htaccess代码如下:
RewriteEngine On # Turn on the rewriting engine RewriteRule ^not-found/?$ pages-404.php [NC,L] # Handle requests for "not-found" RewriteRule ^api/addUser/?$ _addUser.php [NC,L] RewriteRule ^api/login/?$ _loginUser.php [NC,L] RewriteRule ^api/logout/?$ _logoutUser.php [NC,L] ErrorDocument 404 /pages-404.php
2. 确认ErrorDocument路径有效性
确保pages-404.php文件存放在网站根目录(C:/xampp/htdocs/)下,你的配置中/pages-404.php是绝对路径,只要文件存在就能正常触发。
3. 验证mod_rewrite模块状态
打开XAMPP的httpd.conf文件,确认LoadModule rewrite_module modules/mod_rewrite.so这一行没有被注释(前面无#),若修改过需重启Apache服务。
4. 检查.htaccess文件位置
确保.htaccess放在网站根目录(C:/xampp/htdocs/),而非api子目录,否则规则的匹配范围会被限制在子目录内。
内容的提问来源于stack exchange,提问作者Shahood Amir
相关产品推荐
相关产品推荐

