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

Apache2 Rewrite问题:首页正常但跳转触发404找不到URL错误

Apache Rewrite规则导致跳转404问题解决

问题情况

首页可正常访问,但点击信息按钮等跳转链接时出现「URL NOT FOUND 404」错误。已尝试以下操作但未解决:

  • 执行a2enmod rewrite确认Rewrite模块已启用
  • 将Apache配置中所有AllowOverride项从none改为all并重启服务
  • 检查site-available目录下的配置,未发现相关Directory参数

更新:.htaccess文件内容

<ifmodule mod_mime.c>
    AddType application/x-web-app-manifest+json .webapp
    Addtype font/truetype .ttf
</ifmodule>
 
<ifmodule mod_expires.c>
    ExpiresActive On
    ExpiresByType application/javascript "access plus 1 week"
    ExpiresByType text/css "access plus 1 week"
    ExpiresByType image/png "access plus 1 week"
    ExpiresByType image/jpeg "access plus 1 week"
    ExpiresByType image/svg+xml "access plus 1 week"
    ExpiresByType font/truetype "access plus 1 week"
</ifmodule>
 
FileETag None
 
<ifmodule mod_rewrite.c>
    RewriteEngine On
 
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^ index.php [QSA,L]
</ifmodule>
 
<ifmodule mod_filter.c>
    <IfModule mod_deflate.c>
        AddOutputFilterByType DEFLATE text/css text/html application/javascript font/truetype
    </IfModule>
</ifmodule>
 
<ifmodule mod_headers.c>
    Header set X-Frame-Options DENY
    Header set X-Content-Type-Options nosniff
    Header set X-XSS-Protection "1; mode=block"
    Header set Referrer-Policy no-referrer
</ifmodule>

解决步骤

  1. 补全站点配置的Directory段
    必须在你的站点配置文件(site-available/你的站点.conf)中添加网站根目录对应的<Directory>配置,否则.htaccess不会生效:

    <Directory /var/www/你的应用根目录>
        Options Indexes FollowSymLinks
        AllowOverride All
        Require all granted
    </Directory>
    

    替换/var/www/你的应用根目录为实际路径,保存后重启Apache:systemctl restart apache2

  2. 启用.htaccess依赖的所有模块
    你的.htaccess用到了多个模块,执行以下命令启用并重启服务:

    a2enmod mime expires deflate filter headers
    systemctl restart apache2
    
  3. 验证核心配置正确性

    • 确认index.php存在于网站根目录
    • 检查Apache的DocumentRoot配置,确保指向的是应用的根目录
  4. 查看错误日志定位问题
    执行命令实时查看错误日志,点击跳转链接后就能看到404的具体原因:

    tail -f /var/log/apache2/error.log
    
  5. 确认.htaccess是否被读取
    在.htaccess中添加一行无效代码(比如InvalidTestDirective),访问网站如果返回500错误,说明.htaccess已被读取;如果还是404,回到第一步检查Directory配置。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 11:35:27