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

现有mod_rewrite规则下.htaccess实现IP跳转域名解决多语言前缀冲突

正确合并重写规则方案

第一步:合并后的完整.htaccess配置

<IfModule mod_rewrite.c>
  RewriteEngine On

  # IP跳转规则放在最前面
  RewriteCond %{HTTP_HOST} ^50\.50\.60\.60$
  RewriteRule (.*) https://www.example.com/$1 [R=301,L]

  # 原有路由转发规则放在后面
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteRule ^(.*)$ index.php?/$1 [L]
</IfModule>

规则逻辑说明

  • 重写规则按从上到下的顺序匹配,[L]标记会让匹配成功的规则执行后终止当前轮次的重写,所以外部跳转类规则必须放在内部路由转发规则之前,否则请求会先被转发到index.php,跳转规则永远不会触发
  • 同一mod_rewrite区块内不需要重复声明RewriteEngine On

可选:避免IP跳转后自动追加语言前缀

如果你不希望IP跳转后被自动加上/en/路径,在MY_Lang.php的__construct方法最开头添加如下判断即可:

function __construct()
{
    // 访问IP时直接跳过语言自动跳转逻辑,优先执行htaccess的重定向规则
    if ($_SERVER['HTTP_HOST'] === '50.50.60.60') {
        parent::__construct();
        return;
    }

    // 原有代码保持不变
    global $CFG;
    global $URI;
    // ... 剩余原有代码不做修改
}

测试注意事项

301重定向会被浏览器持久化缓存,测试时请使用浏览器无痕模式,或清理浏览器缓存后再验证效果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 01:51:00