You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Apache服务器.htaccess URL重写规则触发404错误求助

Apache URL重写404问题排查与解决

核心排查步骤

1. 确认.htaccess是否被Apache读取

在.htaccess文件顶部添加一行无效代码(比如TestRule Invalid),重启Apache后访问目标URL:

  • 若出现500错误:说明.htaccess已生效,问题出在重写规则或路径匹配
  • 若仍为404:说明Apache未加载该.htaccess,重点检查虚拟主机目录配置

2. 修正虚拟主机目录配置

确保000-default.conf中的<Directory>块包含必要权限配置,且路径完全匹配实际目录:

<VirtualHost *:8992>
    ServerName test.com.br
    DocumentRoot /var/www

    <Directory /var/www/gmz/api>
        AllowOverride All
        Require all granted  # Apache 2.4必须配置,否则权限拒绝可能伪装成404错误
    </Directory>
</VirtualHost>
  • 确认ports.conf中已添加Listen 8992,确保Apache监听该端口
  • 重启Apache后再次测试

3. 优化重写规则

去掉可能干扰的RewriteBase(因.htaccess已在目标目录下,规则匹配基于当前目录路径),简化规则:

RewriteEngine On

# 匹配带ID的请求:/animal/123 或 /animal/abc-xyz
RewriteRule ^animal/([\w-]+)/?$ animal.php?search=$1 [NC,L]

# 匹配不带ID的请求:/animal 或 /animal/
RewriteRule ^animal/?$ animal.php [NC,L]
  • [\w-]等价于0-9a-zA-Z_-,语法更简洁
  • NC忽略大小写,L终止后续规则匹配

4. 验证文件与权限

  • 确认/var/www/gmz/api/animal.php真实存在,执行命令设置正确权限:chown www-data:www-data animal.php && chmod 644 animal.php
  • 检查/var/www/gmz/api目录权限为755,确保Apache能读取目录内容

5. 开启重写日志调试

若以上步骤无效,开启Apache重写日志定位具体问题:
在虚拟主机配置中添加:

RewriteLog "/var/log/apache2/rewrite.log"
RewriteLogLevel 3

重启Apache后访问目标URL,查看rewrite.log可清晰看到规则匹配过程、是否重写成功等细节,精准定位问题点。


内容的提问来源于stack exchange,提问作者Luis

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.02 09:42:33