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

.htaccess重定向排除指定页面遇LiteSpeed 404问题求助

解决LiteSpeed服务器上.htaccess排除页面404问题(旧域名重定向场景)

问题背景

需要将旧域名所有URL 301重定向到新域名,但排除/contact-form和/about两个页面。本地Apache环境测试配置正常,但部署到LiteSpeed服务器后,被排除的页面出现404错误。

核心原因

LiteSpeed与Apache在Rewrite规则的解析逻辑上存在细微差异,主要体现在:

  • 对RewriteRule的L标志处理优先级不同,Apache下终止后续规则的逻辑在LiteSpeed下需要更明确的匹配
  • 冗余的RewriteCond可能导致规则匹配冲突,LiteSpeed对条件的顺序敏感度更高

修正后的.htaccess配置

将以下配置放在WordPress规则块之前,替换原有的重定向规则:

RewriteEngine On

# 匹配旧域名(替换为实际旧域名)
RewriteCond %{HTTP_HOST} ^(?:www\.)?olddomain\.com$ [NC]

# 排除指定页面及其子路径,终止后续重定向规则
RewriteRule ^(contact-form|about)($|.*) - [L,NC]

# 排除静态资源,避免样式、脚本等被重定向
RewriteCond %{REQUEST_URI} !\.(css|js|png|jpg|gif|webp|ico)$ [NC]

# 剩余所有请求重定向到新域名
RewriteRule ^(.*)$ https://newdomain.com/$1 [R=301,L]

# 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

配置说明

  1. 合并排除规则:用^(contact-form|about)($|.*)同时匹配页面本身(如/contact-form)和子路径(如/contact-form/subpage),[L,NC]确保不区分大小写且直接终止后续重定向规则,这在LiteSpeed下比多条RewriteCond更可靠。
  2. 简化静态资源排除:将重复的静态资源条件合并为一条,减少规则冗余。
  3. 规则顺序:确保重定向和排除规则在WordPress规则之前执行,避免WP的路由规则干扰。

LiteSpeed服务器额外检查项

  1. 确认mod_rewrite启用:部分LiteSpeed主机默认关闭mod_rewrite,需在主机控制面板或联系服务商开启。
  2. 清除服务器缓存:LiteSpeed会缓存Rewrite规则和页面内容,修改.htaccess后必须清除服务器缓存才能生效。
  3. 验证旧站点页面存在:排除后的页面会走旧站点的WordPress路由,需确保旧域名站点上确实存在/contact-form和/about页面,否则仍会出现404。

内容的提问来源于stack exchange,提问作者Vanda Nojan - وندا نوژن

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 11:27:28