我们已经准备好了,你呢?

我们与您携手共赢,助力您企业线上获客!

家兴网络分享常见的将不带 www(裸域)访问自动跳转到带 www 域名的实现方式,包括操作步骤和注意事项。主要思路是通过 301 永久重定向,让用户或搜索引擎始终使用带 www 的规范域名访问,从而避免权重分散和 https/SEO 问题。下面先做一个整体概述,再分别从 Apache(.htaccess)、Nginx、IIS、DNS 以及 PHP 五个角度进行详细讲解。

概述

为了保证网站的规范访问和 SEO 优化,通常需要将用户访问 htjh.net (不带 www)时,统一跳转到 www.htjh.net(带 www)。常见做法是使用 301 永久重定向,这样搜索引擎会把原 URL 的大部分权重转移到新 URL,有助于收录和排名优化。可以通过服务器配置(如 Apache 的 .htaccess 、Nginx 的 server 块、IIS 的 URL 重写等)或 DNS 服务商的 URL 转发来实现,也可以在代码层面(如 PHP)做简单跳转。下面依次介绍各种实现方案及其优缺点。

为什么要做 www 与裸域的重定向

SEO 和权重集中

将不带 www 和带 www 的访问统一到一个域名,可以避免搜索引擎把两者当作两个不同的网站,导致权重分散和重复内容问题。使用 301 永久重定向可以让搜索引擎将原来裸域的链接权重合并到带 www 的主域名上,有助于排名优化。

HTTPS 和证书管理

如果网站启用了 HTTPS 证书,通常会对 www.htjh.net 和 htjh.net 分别进行证书配置。为了简化证书管理,也常将裸域跳转到带 www 后,仅在带 www 域名上配置证书,以保证访问时始终使用同一个证书,避免中间人警告。

用户访问习惯

部分用户习惯输入 htjh.net,部分用户习惯输入 www.htjh.net。统一到带 www 的规范域名,可以给用户一致的体验,并避免因未配置重定向而出现访问不到网站的情况。

方法一:Apache (.htaccess 文件)

1. 前提条件

  • 服务器使用 Apache,且已开启 mod_rewrite 模块。

  • 网站根目录可以读写并放置 .htaccess 文件。

2. 配置步骤

  1. 在站点根目录下新建(或编辑已有的) .htaccess 文件。

  2. 将以下代码加入文件开头(将 htjh.net 替换为你的裸域,www.htjh.net 替换为带 www 的主域名):

    RewriteEngine On                         # 打开重写引擎
    RewriteCond %{HTTP_HOST} ^htjh.net$  [NC]  # 如果 Host 完全等于裸域
    RewriteRule ^(.*)$ http://www.htjh.net/$1 [R=301,L]  # 301 重定向到带 www 的 URL
    • RewriteEngine On:开启引擎后才能使用后续规则。

    • RewriteCond %{HTTP_HOST} ^htjh.met$ [NC]:匹配 htjh.net,其中 NC 表示大小写不敏感。

    • RewriteRule ^(.*)$ http://www.htjh.net/$1 [R=301,L]:将访问的路径部分(如 /foo)追加到重定向后的 URL,R=301 表示永久重定向,L 表示最后一条规则。

  3. 保存后无需重启 Apache,一般在几秒内即可生效。访问 http://htjh.net/abc 时会自动跳转到 http://www.htjh.net/abc

3. 支持 HTTPS

如果网站已经启用 HTTPS,且期望将裸域 HTTP/HTTPS 都跳转到 https://www.htjh.net,可以在 .htaccess 中做如下改写:

RewriteEngine On
# 针对 HTTP 裸域:
RewriteCond %{HTTPS} !=on
RewriteCond %{HTTP_HOST} ^htjh.net$ [NC]
RewriteRule ^(.*)$ https://www.htjh.net/$1 [R=301,L]

# 针对 HTTPS 裸域:
RewriteCond %{HTTPS} =on
RewriteCond %{HTTP_HOST} ^htjh.net$ [NC]
RewriteRule ^(.*)$ https://www.htjh.net/$1 [R=301,L]

这样无论用户访问 http://htjh.net 还是 https://htjh.net 都会跳到 https://www.htjh.net

4. 优缺点

  • 优点:简单易用,适合大部分虚拟主机或自有服务器,配置后稳定无额外费用。

  • 缺点:需要服务器支持 mod_rewrite 模块,且在高并发场景下,使用 .htaccess 会额外增加文件解析开销。

方法二:Nginx (server 块配置)

1. 前提条件

  • 服务器使用 Nginx,并且具备修改站点配置文件(通常位于 /etc/nginx/conf.d/ 或 /etc/nginx/sites-enabled/ 下)的权限。

  • 拥有 root 或 sudo 权限,可以重启或重新加载 Nginx。

2. 配置步骤

  1. 打开 Nginx 的站点配置文件(如 example.confdefault.conf),在 server 段之外新增一个用于监听裸域的 server 段。例如:

    server {
        listen       80;                        # 监听 80 端口 HTTP 请求
        server_name  htjh.net;               # 仅匹配裸域
        return       301 http://www.htjh.net$request_uri;  # 永久重定向到带 www
    }
    • listen 80;:监听 HTTP 默认端口。

    • server_name htjh.net;:当请求的 Host 为裸域时生效。

    • return 301 http://www.htjh.net$request_uri;:将请求 URI 原样追加到重定向目标,301 表示永久重定向。

  2. 如果启用了 HTTPS,需要另外监听 443 并做类似的跳转。例如:

    server {
        listen       443 ssl;
        server_name  htjh.net;
        ssl_certificate     /path/to/cert.pem;       # 替换为证书路径
        ssl_certificate_key /path/to/key.pem;        # 替换为私钥路径
    
        return       301 https://www.htjh.net$request_uri;
    }
    • listen 443 ssl;:监听 HTTPS。

    • 需填写正确的证书及私钥路径,才能支持 HTTPS。

  3. 最后重载或重启 Nginx,使配置生效:

    sudo nginx -t    # 测试配置是否正确
    sudo nginx -s reload
    # 或者:sudo systemctl reload nginx

3. 优缺点

  • 优点:性能优秀,单进程下处理高并发更稳定,且配置文件一经加载即可生效。

  • 缺点:需要有服务器访问权限和 Nginx 基础知识,不适用于仅有虚拟主机权限的用户。

方法三:IIS (Windows 服务器)

1. 前提条件

  • 服务器运行 Windows,使用 IIS(Internet Information Services)作 Web 服务器。

  • 已安装并启用了 URL 重写扩展(URL Rewrite Module)。

2. 配置步骤

  1. 将裸域 (htjh.net)与带 www (www.htjh.net)都绑定到同一个网站,并指向同一物理路径。

  2. 打开 IIS 管理器,选择你的网站,双击右侧的 “URL 重写” 功能。

  3. 在右侧操作栏中点击 “添加规则…”,选择 “空白规则(Inbound rules)”,然后按如下配置填写:

    • 操作类型:重定向(Redirect)

    • 重定向 URL:http://www.htjh.net/{R:1}

    • 重定向类型:永久(301)

    • 条件输入:{HTTP_HOST}

    • 模式:^htjh.net$

    • 忽略大小写:勾选

    • {HTTP_HOST}  模式:^htjh.net:80$(或其他端口)

    • 使用模式:(.*)

    • 名称:RedirectToWWW(自定义)

    • 匹配 URL

    • 条件(Conditions):

    • 操作(Action):

    1. 点击 “添加…”:

    2. 如果需要同时匹配不区分端口的情况,可另外添加一个条件:

  4. 点击 “应用” 保存后,IIS 会自动生成对应的 web.config 片段。此时访问 http://htjh.net/foo 会跳转到 http://www.htjh.net/foo

3. 优缺点

  • 优点:通过 GUI 操作即可完成,不需要修改代码文件;支持更复杂的重写规则。

  • 缺点:需要 IIS 环境及 URL 重写模块,如果没有该模块需先下载安装;纯静态网站可能不想额外引入该模块。

方法四:DNS URL 转发(部分 DNS 服务商)

1. 原理与适用场景

部分 DNS 服务商(如某些域名注册商)提供 “URL 转发” 或 “URL 重定向” 功能,可以在其后台直接配置,将裸域指向带 www 的 URL。此种方式不依赖 Web 服务器配置,适合对服务器无控制权的场景。

2. 操作步骤

  1. 登录 DNS 服务商的控制面板(常见平台:阿里云DNS、腾讯云 DNSPod、万网等)。

  2. 找到需要重定向的裸域记录,选择 “URL 转发” 或 “URL 重定向” 类型(部分平台称为 “泛解析 URL 转发”)。

  3. 填写转发目标 URL,如 http://www.htjh.net/。如果支持带路径转发,可填写 http://www.htjh.net/$path(不同平台变量写法不同,需参照其文档)。

  4. 保存后大约几分钟至几小时内生效(生效时间取决于 DNS TTL)。之后访问裸域会被服务器返回 301 重定向到带 www 域名。

3. 优缺点

  • 优点:无须服务器配置,无需修改 Web 服务器或代码;操作简便,上手快。

  • 缺点:部分服务商需要进行ICP备案后才能使用;通常只支持简单的单 URL 转发,不支持 HTTPS;稳定性和灵活性逊于服务器端配置。

方法五:PHP 代码层面重定向

1. 适用场景

如果网站使用 PHP 作为后台语言,可以在入口文件(如 index.phpheader.php 等)中检测 $_SERVER['HTTP_HOST'],如果不是 www.htjh.net,则通过 PHP header 函数跳转。这种方式对只会使用纯静态空间或无法配合服务器配置 .htaccess/.conf 的情况特别实用。

2. 示例代码

在以上层级的公共引导文件(如 index.php)最前面加入如下代码:

<?php
$host = $_SERVER['HTTP_HOST'];
$requestUri = $_SERVER['REQUEST_URI'];

/*
 * 如果访问的 Host 不是 www.htjh.net 且不包含端口(或判断端口情况),则做 301 跳转
 * 例如:判断是否以 htjh.net 开头
 */
if (preg_match('/^htjh.net(:d+)?$/i', $host)) {
    // 跳转到带 www 的域名,并保留原有请求路径
    header("HTTP/1.1 301 Moved Permanently");
    header("Location: https://www.htjh.net" . $requestUri);
    exit();
}
?>
  • $_SERVER['HTTP_HOST']:获取请求头中的域名。

  • preg_match('/^htjh.net(:d+)?$/i', $host):匹配裸域或带端口的裸域。

  • header("HTTP/1.1 301 Moved Permanently"):返回 301 永久重定向状态码。

  • header("Location: https://www.htjh.net" . $requestUri):执行跳转,并附加请求路径。

3. 优缺点

  • 优点:只需在代码层面添加几行即可生效,适合没有服务器配置权限的纯虚拟主机或空间。

  • 缺点:会增加 PHP 每次请求的开销,若访问路径较长或并发量大,对性能略有影响;且需保证此段代码在最前执行,避免页面输出后跳转失效。

注意事项

  1. 选择 301 永久重定向:在 SEO 场景下,务必使用 301 Moved Permanently,而不是临时 302,以便搜索引擎将旧链接权重转移到新的带 www 链接。

  2. SSL 证书覆盖范围:如果站点启用了 HTTPS,建议同时在裸域和带 www 域名上都配置证书,才能在 HTTPS 裸域页面直接跳转到 HTTPS 带 www 。否则有可能出现证书不匹配而导致浏览器警告。

  3. DNS 解析 A 记录/ CNAME 记录:不论采取哪种方案,都需在 DNS 后台将裸域和带 www 分别解析到同一台服务器 IP,尤其在使用服务器端配置时,htjh.net 需要有 A 记录或 ALIAS / ANAME 记录指向服务器。

  4. 通配符和端口号:如果希望同时支持带端口的访问(如 htjh.net:8080),需在正则匹配中添加端口号判断。对于常见的 80/443 之外端口,可在正则里使用 (:d+)?

  5. 避免重定向循环:确保在匹配条件中只匹配裸域,避免将已经是带 www 的请求再次重定向,否则会造成循环跳转。

  6. 测试与监控:配置完成后,需要测试以下几种情况是否正确跳转:

    • HTTP 裸域 → HTTP 带 www

    • HTTP 裸域 → HTTPS 带 www (若配置了多协议跳转)

    • HTTPS 裸域 → HTTPS 带 www
      可以使用 curl -I http://htjh.net 等工具查看返回的 HTTP 状态码是否为 301。

小结

通过上述方法,可以灵活地将不带 www 的域名自动跳转到带 www 的规范域名,以实现 SEO 优化、统一访问规范以及证书管理等目的。常见的服务器端方案有 Apache 的 .htaccess 配置、Nginx 的 server 块配置、IIS 的 URL 重写,以及 DNS 级别的 URL 转发。在代码层面,也可通过 PHP header 函数实现简单的跳转。根据自身服务器或空间的实际情况,选择对应方案进行配置即可。

在线客服
联系方式

热线电话

17630273926

上班时间

周一到周五

公司电话

17630273926

二维码
微信
线