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

同一服务器多域名重定向到对应URI用mod rewrite还是301重定向?

同服务器多域名对应URI重定向最优方案

核心概念澄清

mod_rewrite是Apache提供的URL重写工具,301是重定向的HTTP状态码,二者不是二选一的互斥关系,是工具+返回状态的搭配组合。

优先方案:mod_rewrite实现301重定向

适用条件

只需确认Apache已开启mod_rewrite模块,且允许根目录使用.htaccess配置(无httpd.conf修改权限也可使用,绝大多数商用主机默认开启该权限)

配置代码

在网站根目录新建.htaccess文件,写入如下规则:

RewriteEngine On
# 仅匹配根路径请求,避免干扰现有正常业务URI
RewriteCond %{REQUEST_URI} ^/$
# 提取域名标识,自动适配带/不带www的访问场景,不区分大小写
RewriteCond %{HTTP_HOST} ^(www\.)?([^.]+)\.com$ [NC]
# 跳转至对应URI,返回301永久重定向状态码
RewriteRule ^(.*)$ /index.php/%2/index [L,R=301]

优势

  • 性能远高于PHP层处理,无需启动PHP进程即可返回跳转结果
  • 不侵入现有业务代码,规则独立维护
  • 自动适配多域名,新增同规则域名无需修改配置

备选方案:PHP层实现301重定向

如果没有.htaccess写入权限,可直接在入口index.php最开头插入如下代码:

<?php
// 仅处理根路径访问请求
if ($_SERVER['REQUEST_URI'] === '/') {
    // 提取域名标识,过滤www前缀和.com后缀
    $domain_tag = preg_replace('/^(www\.)?([^.]+)\.com$/', '$2', strtolower($_SERVER['HTTP_HOST']));
    // 返回301永久重定向
    header('HTTP/1.1 301 Moved Permanently');
    header("Location: /index.php/{$domain_tag}/index");
    exit();
}
// 原有业务代码保持不变
?>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 17:18:03