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>
解决步骤
补全站点配置的Directory段
必须在你的站点配置文件(site-available/你的站点.conf)中添加网站根目录对应的<Directory>配置,否则.htaccess不会生效:<Directory /var/www/你的应用根目录> Options Indexes FollowSymLinks AllowOverride All Require all granted </Directory>替换
/var/www/你的应用根目录为实际路径,保存后重启Apache:systemctl restart apache2启用.htaccess依赖的所有模块
你的.htaccess用到了多个模块,执行以下命令启用并重启服务:a2enmod mime expires deflate filter headers systemctl restart apache2验证核心配置正确性
- 确认
index.php存在于网站根目录 - 检查Apache的
DocumentRoot配置,确保指向的是应用的根目录
- 确认
查看错误日志定位问题
执行命令实时查看错误日志,点击跳转链接后就能看到404的具体原因:tail -f /var/log/apache2/error.log确认.htaccess是否被读取
在.htaccess中添加一行无效代码(比如InvalidTestDirective),访问网站如果返回500错误,说明.htaccess已被读取;如果还是404,回到第一步检查Directory配置。
内容的提问来源于stack exchange,提问作者Marvin
相关产品推荐
相关产品推荐

