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

WordPress URL重写问题:移除location参数后路径异常

WordPress URL重写修复:移除location参数并保留完整路径

问题现象

  • 本地环境:原URL http://localhost/mydirectory/restaurants/japanese/?location=london,期望跳转至 http://localhost/mydirectory/restaurants/japanese/london,但现有规则返回 http://localhost/mydirectory/location/london/
  • 测试服务器:原URL https://example.com/de/restaurants/japanese/?location=Berlin,期望跳转至 https://example.com/de/restaurants/japanese/Berlin,但现有规则返回的URL缺失/de/前缀

现有规则问题分析

  1. 本地环境规则:RewriteRule (.*) ^/%1? 丢弃了原请求路径($1),直接跳转到根目录下的location参数值,导致路径丢失
  2. 测试服务器规则:RewriteRule ^(.*)$ /$1/%1? 使用了绝对路径开头的/,忽略了RewriteBase /de/的配置,导致生成的URL缺失前缀

修正后的规则

本地环境配置

RewriteEngine On
RewriteBase /mydirectory/
# 精确匹配仅含location参数的请求,避免匹配多参数场景
RewriteCond %{QUERY_STRING} ^location=([^&]+)$ [NC]
# 保留原路径,追加location参数值,清空查询字符串
RewriteRule ^(.*)$ $1/%1? [R=301,L]

测试服务器配置

RewriteEngine On
RewriteBase /de/
# 精确匹配仅含location参数的请求
RewriteCond %{QUERY_STRING} ^location=([^&]+)$ [NC]
# 结合RewriteBase生成带前缀的完整路径,追加location参数值
RewriteRule ^(.*)$ $1/%1? [R=301,L]

关键说明

  • 将location=(.*)改为location=([^&]+),可以避免当URL存在多个参数时错误匹配多余内容
  • 测试阶段建议将R=301临时改为R=302,防止浏览器缓存永久跳转规则影响测试结果,确认正常后再改回301
  • 确保WordPress后台「设置-固定链接」的配置与重写规则兼容,避免冲突
  • 测试前清除浏览器缓存,或使用隐私窗口访问,排除缓存干扰

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 11:27:18