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

WordPress根目录tool子站WWW转非WWW跳转丢失路径问题

解决WordPress根目录下子目录WWW转非WWW跳转丢失路径问题

问题背景

  • 网站根目录部署WordPress,域名为mywebsite.com
  • /tool子目录存在独立于WordPress的应用
  • 需求:将/tool下所有带WWW的链接跳转至非WWW域名,同时完整保留目录结构与请求参数

当前错误表现

访问https://www.mywebsite.com/tool/dfy/index.php?campaign=33&token=1时,会错误跳转到https://mywebsite.com/dfy/?campaign=33&token=1,已完成WWW转非WWW,但丢失了tool目录和index.php文件路径。

错误原因分析

之前修改的根目录.htaccess中,针对tool目录的跳转规则硬编码了/tool/dfy/路径,导致匹配到tool/开头的请求时错误替换原有路径;同时规则顺序不合理,跳转逻辑被WordPress规则干扰。

正确解决方案

修改根目录的.htaccess文件,将WWW转非WWW的规则放在WordPress核心规则之前,确保所有请求先处理跳转,且不硬编码子目录路径:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]

# 全局处理WWW转非WWW,保留完整请求路径
RewriteCond %{HTTP_HOST} ^www\.mywebsite\.com [NC]
RewriteRule ^(.*)$ https://mywebsite.com/$1 [L,R=301]

# WordPress核心重写规则,排除tool目录
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond $1 !^tool/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

# END WordPress

规则说明

  1. 跳转规则前置:将WWW转非WWW的规则放在最顶部,确保所有请求(包括/tool子目录)先完成域名跳转
  2. 完整路径匹配:RewriteRule ^(.*)$ https://mywebsite.com/$1中的$1会完整保留请求的路径部分(如tool/dfy/index.php),不会丢失结构
  3. 排除WordPress接管:RewriteCond $1 !^tool/确保/tool目录下的请求不会被WordPress的重写规则接管,直接访问独立应用
  4. HTTPS适配:跳转目标使用https,符合当前主流加密访问需求

注意:无需在/tool或/tool/dfy目录下额外添加.htaccess文件,根目录的规则已覆盖所有场景,且优先级更高。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 00:52:45