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

如何配置.htaccess实现www跳转非www且子目录正常生效?

你的配置存在三个核心问题导致子目录跳转不生效,且和你的需求完全反向:

  1. 跳转逻辑写反:现有规则是非www域名跳转到www域名,和你要的www跳非www的需求完全相反
  2. 域名跳转后强制转回HTTP:你已经配置了HTTP转HTTPS,但域名跳转规则里又写死了http前缀,会产生多余跳转甚至跳转回环
  3. 重定向规则匹配逻辑有误,且和内部重写规则的优先级处理不当,导致子目录路径未触发域名跳转
修正后的配置
RewriteEngine On

# 统一跳转HTTP到HTTPS
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

# 所有带www的域名跳转至非www域名,匹配全路径
RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
RewriteRule ^(.*)$ https://%1/$1 [L,R=301]

# 内部路径重写规则放在跳转规则之后
RewriteRule blog/(.*)/ viewpost.php?page=$1 [L]
RewriteRule blog/(.*) catpost.php?page=$1 [L]
调整说明
  • 修正了域名跳转逻辑:匹配所有带www前缀的请求,捕获不带www的主域名部分直接跳转,所有路径都会被覆盖,不存在子目录失效的问题
  • 跳转全程保持HTTPS协议,避免多次跳转
  • 所有重定向规则放在内部重写规则之前,确保域名跳转优先执行,不会被内部路径重写拦截
  • 新增[NC]标记匹配域名时不区分大小写,避免大小写问题导致匹配失效
  • 给所有规则补充明确的[L]标记,匹配到对应规则后不再执行后续逻辑,避免规则冲突
  • 调整完成后请清空浏览器缓存再测试,旧的301永久重定向规则会被浏览器缓存,可能影响测试结果

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 17:51:03