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

CodeIgniter网站域名重定向异常:带www的HTTPS域名未跳转求助

解决CodeIgniter中www域名无法重定向到非www HTTPS的问题

你的问题核心在于当前的.htaccess规则只处理了非HTTPS到HTTPS的跳转,但完全没覆盖HTTPS下的www域名转非www的场景。我们只需要补充针对性规则,并调整执行顺序就能解决问题。

修改后的完整.htaccess配置

RewriteEngine On

# 1. 优先处理所有www域名(无论HTTP/HTTPS)跳转到非www HTTPS
RewriteCond %{HTTP_HOST} ^www\.example\.com$ [NC]
RewriteRule ^(.*)$ https://example.com/$1 [R=301,L]

# 2. 处理非HTTPS的非www域名跳转到HTTPS
RewriteCond %{HTTPS} !=on
RewriteRule ^(.*)$ https://example.com/$1 [R=301,L]

# 设置时区
php_value date.timezone Asia/Kolkata

# CodeIgniter原生URL重写规则
<IfModule mod_rewrite.c>
RewriteCond $1 !^(index.php|resources|robots.txt)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?/$1 [L,QSA]
</IfModule>

# CORS跨域设置
<IfModule mod_headers.c>
SetEnvIfOrigin "https://(www|sub1|sub2|sub3).example.com)$" ACAO=$0
Header set Access-Control-Allow-Origin "%{ACAO}e" env=ACAO
Header set Access-Control-Allow-Methods "GET"
</IfModule>

关键调整说明

  • 新增www专属跳转规则:用RewriteCond %{HTTP_HOST} ^www\.example\.com$ [NC]匹配所有带www的域名(NC表示不区分大小写),直接重定向到非www的HTTPS地址,R=301是永久重定向,对搜索引擎SEO更友好。
  • 调整规则执行顺序:把www跳转放在最前面,确保不管是HTTP还是HTTPS的www域名,都会先被处理成目标地址,再处理剩下的非HTTPS跳转。
  • 保留原有功能:CodeIgniter的URL重写、时区配置和CORS规则都完全保留,不影响原有业务逻辑。

验证方法

修改完成后,建议用浏览器无痕模式测试四种域名变体:

  • http://example.com → 自动跳转到https://example.com
  • http://www.example.com → 自动跳转到https://example.com
  • https://www.example.com → 自动跳转到https://example.com
  • https://example.com 保持原地址不变

如果测试时遇到缓存问题,可以清除浏览器缓存后再试。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 07:15:42