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

.htaccess配置旧域名301跳转新域名不生效问题求助

问题原因

你的重定向规则不生效有三个核心问题:

  • 规则语法错误:你添加的RewriteRule (.*)https://accidentallydutch.com/$1 [L,R=301]缺少匹配规则和目标URL之间的分隔空格,Apache无法解析该指令,因此既不会执行跳转也不会抛出报错。
  • 触发条件限制:原有两段HTTPS跳转规则都绑定了「仅HTTPS关闭时触发」的判断条件,当用户通过HTTPS访问旧域名时,跳转逻辑完全不会执行。
  • 优先级冲突:重复的RewriteEngine指令、分散的跳转块会被后续WordPress默认路由规则覆盖优先级,跳转逻辑会被直接跳过。
修复方案
  1. 删除文件中两段冗余的旧HTTPS插件生成的跳转块(即标注BEGIN HTTPS Forced Redirect和BEGIN Really Simple SSL Redirect 5.3.0的两段重复代码),避免规则冲突。
  2. 将统一的域名跳转+HTTPS强制规则放在文件最顶部(位于WordPress默认规则之前,不要放在WordPress自动生成的标记区间内,避免被WordPress自动覆盖)。
  3. 替换完成后的完整.htaccess配置如下:
<IfModule mod_rewrite.c>
RewriteEngine On
# 匹配所有访问旧域名(含www/非www、HTTP/HTTPS)的请求
RewriteCond %{HTTP_HOST} ^(www\.)?invadingholland\.com$ [NC]
# 排除SSL证书验证路径,避免证书申请/续期失败
RewriteCond %{REQUEST_URI} !^/\.well-known/acme-challenge/
# 301永久跳转到新域名对应路径
RewriteRule ^(.*)$ https://accidentallydutch.com/$1 [L,R=301]
</IfModule>

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress
验证注意事项
  • 测试阶段先将规则中的R=301改为R=302(临时跳转),避免301永久跳转的强缓存特性导致浏览器缓存错误规则,确认所有文章、页面路径跳转正常后再改回R=301。
  • 配置修改后先清空浏览器缓存再测试,或使用浏览器无痕模式验证,排除缓存干扰。
  • 确认旧域名所在服务器已开启Apache mod_rewrite模块,且站点目录配置允许.htaccess生效(AllowOverride All),否则规则不会被服务器读取执行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 14:19:18