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

WordPress修改URL移除查询参数后出现404错误求助

解决WordPress自定义友好URL的404问题

你当前的.htaccess规则只完成了外部重定向(把旧的带查询参数的URL跳转到友好URL),但没有配置内部重写——当用户直接访问友好URL时,服务器不知道要把它映射回原有的查询参数格式,导致WordPress无法识别这个路由,返回404错误。

修复步骤:

  1. 修改你的.htaccess文件,在现有规则之后添加内部重写规则,并且要把这些规则放在WordPress默认的重写规则(# BEGIN WordPress块)之前:
RewriteEngine ON

# 外部重定向:把旧URL跳转到友好URL
RewriteCond %{THE_REQUEST} \s([^?]*)\?name=(\S+)\s [NC]
RewriteRule ^ %1/%2? [R=301,L]

# 内部重写:把友好URL映射回原查询参数(不改变浏览器显示的URL)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^offer/([^/]+)/?$ /offer/?name=$1 [L,QSA]

# WordPress默认重写规则(不要修改下面的块)
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress
  1. 确保你的WordPress固定链接设置不是默认的“朴素”格式:

    • 进入WordPress后台 → 设置 → 固定链接
    • 选择除“朴素”外的任意格式(比如“文章名”),保存设置。这会确保WordPress的重写规则正常生效,同时不会和我们自定义的规则冲突。
  2. 验证自定义页面模板:
    确保你的offer自定义页面模板中,依然能通过$_GET['name']获取到产品名称参数——内部重写后,这个参数会被正常传递给WordPress的页面处理逻辑。

规则说明:

  • RewriteCond %{REQUEST_FILENAME} !-f 和 RewriteCond %{REQUEST_FILENAME} !-d:确保只有当请求的不是真实文件或目录时,才执行重写规则,避免影响服务器上的真实资源。
  • RewriteRule ^offer/([^/]+)/?$ /offer/?name=$1 [L,QSA]:把/offer/xxx或/offer/xxx/(末尾带斜杠)的请求,内部重写为/offer/?name=xxx,QSA标志会保留原URL中可能存在的其他查询参数(如果有的话)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 15:07:17