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

CodeIgniter下.htaccess动态URL跨域名重定向失效求助

解决方法

确保你的.htaccess文件放在CodeIgniter根目录(与index.php同级),按以下顺序配置规则即可解决冲突问题:

1. 先配置域名路径重定向规则

把针对app.domain1.com下g1/、g2/路径的重定向放在最前面,优先处理:

# 开启RewriteEngine
RewriteEngine On

# 匹配app.domain1.com下g1/开头的所有动态路径,重定向到app.domain2.com对应路径
RewriteCond %{HTTP_HOST} ^app\.domain1\.com$ [NC]
RewriteRule ^g1/(.*)$ https://app.domain2.com/g1/$1 [R=301,L]

# 匹配app.domain1.com下g2/开头的所有动态路径,重定向到app.domain2.com对应路径
RewriteCond %{HTTP_HOST} ^app\.domain1\.com$ [NC]
RewriteRule ^g2/(.*)$ https://app.domain2.com/g2/$1 [R=301,L]
  • [NC]:忽略域名大小写匹配
  • (.*):捕获g1/或g2/之后的所有动态路径片段
  • [R=301]:永久重定向,适合正式环境;临时测试可改为R=302
  • [L]:匹配后终止后续规则处理,避免与CodeIgniter的规则冲突

2. 保留CodeIgniter移除index.php的规则

在重定向规则之后,添加框架核心的URL重写规则:

# 若请求的是真实存在的文件或目录,直接访问不处理
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

# 将非文件/目录的请求转发到index.php
RewriteRule ^(.*)$ index.php/$1 [L]

如果服务器环境不支持上述写法,可尝试替换为:

RewriteRule ^(.*)$ index.php?/$1 [L]

3. 关键检查项

  • 确认服务器已开启mod_rewrite模块,且Apache站点配置中设置了AllowOverride All,允许.htaccess生效
  • 测试前清空浏览器缓存,301重定向会被浏览器缓存,可能导致测试结果不准
  • 本地测试需在hosts文件中配置app.domain1.com和app.domain2.com指向本地服务器

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 13:15:09