使用htaccess配置Rewrite engine不生效访问报404问题求助
问题原因及修复方案
你当前的URL重写规则存在正则匹配范围缺陷,加上部分配置项缺失,是触发404的核心原因:
- 原有规则
^p/([a-z0-9])$的分组仅匹配单个小写字母/数字,只要你的pid长度≥2就会匹配失败,直接返回404 - 缺失必要的规则标记,也没有做路径兼容,服务器路径层级不对时也会匹配失败
修复后的完整配置
RewriteEngine on # 如站点部署在二级目录(例如 domain.com/shop/),取消下面一行的注释并修改为对应目录名 # RewriteBase /shop/ RewriteRule ^p/([a-z0-9]+)$ product1.php?pid=$1 [NC,QSA,L]
新增配置说明:
- 正则末尾新增
+,匹配1位及以上的字母/数字,兼容不同长度的pid NC标记:忽略大小写,匹配/P/123这类大写路径QSA标记:如果原访问地址带额外查询参数(例如/p/123?source=search),会自动附加到重写后的地址上L标记:匹配到当前规则后停止执行后续重写规则,避免规则冲突
附加排查项
如果修改规则后依然返回404,依次检查以下配置:
- 确认Apache已开启
mod_rewrite模块,可通过phpinfo()查看已加载模块列表验证 - 确认站点VirtualHost配置中,对应根目录的
AllowOverride参数设置为All,否则.htaccess文件不会生效 - 确认
product1.php文件放在.htaccess文件的同级目录下,如果存放在子目录,需要修改重写路径为对应绝对路径,例如/subdir/product1.php?pid=$1
内容的提问来源于stack exchange,提问作者vivek modi
相关产品推荐
相关产品推荐

