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

子目录中.htaccess重写规则失效引发404错误,如何解决?

问题排查与解决

1. 链接路径不匹配

页面中链接使用的是根路径开头的地址(比如/slakken/wijngaardslak),但项目实际位于/REA/MySQL/06-permalinks/opdracht1/目录下。服务器会从网站根目录查找/slakken/文件夹,而该文件夹不存在,直接返回404。

需要把链接改成相对项目目录的路径:

<!-- 原错误链接 -->
<a href="/slakken/wijngaardslak">Wijngaardslak</a>
<!-- 修改为相对路径 -->
<a href="wijngaardslak">Wijngaardslak</a>
<!-- 或者完整绝对路径 -->
<a href="/REA/MySQL/06-permalinks/opdracht1/wijngaardslak">Wijngaardslak</a>

2. 重写规则未匹配slakken/前缀

如果想保留链接里的slakken/前缀(比如/REA/MySQL/06-permalinks/opdracht1/slakken/wijngaardslak),需要修改.htaccess的重写规则,加入slakken/的匹配逻辑:

RewriteEngine on
RewriteBase /REA/MySQL/06-permalinks/opdracht1/

# 匹配包含slakken/前缀的路径,转发到slakken.php
RewriteRule ^slakken/([a-z0-9-]+)/?$ slakken.php?slug=$1 [L,QSA]

修改后,链接可以写成slakken/wijngaardslak(相对路径)或者/REA/MySQL/06-permalinks/opdracht1/slakken/wijngaardslak(绝对路径)。

3. 确认Apache配置允许.htaccess生效

检查XAMPP的Apache配置文件(httpd.conf),确保项目目录的AllowOverride设置为All,否则.htaccess规则不会生效:

<Directory "/REA/MySQL/06-permalinks/opdracht1/">
    AllowOverride All
    Require all granted
</Directory>

同时确认mod_rewrite模块已开启,找到下面一行并去掉开头的#:

LoadModule rewrite_module modules/mod_rewrite.so

修改后重启Apache服务。


内容的提问来源于stack exchange,提问作者T. Limpt

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 22:02:14