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

HTaccess SEO友好URL重写规则问题:404错误求助

解决URL重定向后404的问题

你的规则只完成了旧URL到新URL的外部重定向,但没有处理新URL到实际PHP文件的内部映射——当用户访问https://www.example.com/news/hello-world时,服务器找不到对应的真实文件/目录,所以返回404。

添加一条内部重写规则即可解决,完整的.htaccess代码如下:

# 外部重定向:将旧URL跳转到新URL(地址栏会变化)
RewriteCond %{THE_REQUEST} /news\.php\?post=([^\s&]+) [NC]
RewriteRule ^ /news/%1? [R=302,L,NE]

# 内部重写:将新URL映射到实际PHP文件(地址栏不变)
RewriteRule ^news/([^/]+)/?$ /news.php?post=$1 [L,QSA]

关键说明:

  • 第一条规则和你原代码一致,负责把news.php?post=xxx跳转成友好的news/xxx,R=302是临时重定向,确认没问题后可以改成R=301永久重定向。
  • 第二条规则是核心:当用户访问news/xxx时,服务器内部悄悄把请求转发给news.php?post=xxx,PHP就能正常处理请求,不会返回404。QSA参数用于保留额外的查询参数(比如news/hello-world?foo=bar会被转成news.php?post=hello-world&foo=bar),如果不需要可以去掉。

另外要确保:

  • Apache服务器已启用mod_rewrite模块
  • 网站根目录的.htaccess文件存在,且服务器配置中AllowOverride设置为All或FileInfo

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 19:05:32