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

如何通过Nginx将WordPress默认搜索URL从/?s=重写为/search/

WordPress Nginx搜索URL干净化配置方案

原有重写规则不生效核心有两点原因:一是$query_string变量存储的是URL中?之后的查询串内容,正则匹配时不需要额外加\?前缀,导致规则完全匹配不到请求;二是只做了旧URL到新路径的跳转,没有配置新路径回传给WordPress识别的规则,跳转后WordPress无法识别搜索请求,会返回404。

正确配置步骤

在Nginx对应的站点server块中添加以下两段规则即可:

  1. 旧搜索URL 301跳转到干净路径
# 匹配原生?s=关键词格式的搜索请求,跳转到/search/关键词路径
if ($query_string ~ "^s=([^&]+)(&.*)?$") {
    set $search_term $1;
    set $remaining_args $2;
    rewrite ^/$ /search/$search_term/?$remaining_args? permanent;
}

规则说明:末尾的?用于丢弃原查询串里的s参数,避免参数重复;同时兼容搜索URL后附带其他参数的场景,不会丢失额外参数。

  1. 新路径回转适配WordPress识别逻辑
# 将/search/路径的请求转换为WordPress可识别的搜索参数
location ^~ /search/ {
    rewrite ^/search/([^/]+)/?$ /index.php?s=$1 last;
}

生效验证注意事项

  • 添加完配置后先执行nginx -t检查语法正确性,确认无报错后执行nginx -s reload重载Nginx配置
  • 提前检查WordPress后台是否存在别名为search的页面、分类或自定义文章类型,避免路由冲突
  • 如果站点开启了页面缓存、CDN缓存,需要清空缓存后再测试,避免旧缓存规则干扰

原有错误规则的问题点:

  • 正则匹配$query_string时多余添加\?前缀,导致匹配逻辑完全失效
  • 缺少/search路径到WordPress原生搜索参数的回转规则,跳转后无法正常加载搜索结果
  • 未处理多参数场景,搜索URL带其他附加参数时会出现参数丢失问题

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.31 20:21:37