场景分析
在开始之前,请明确您的重定向需求:

(图片来源网络,侵删)
- 永久性重定向 (301 Redirect):这是最推荐的方式,它告诉搜索引擎和浏览器,这个域名已经永久移动到新地址,这有助于将旧域名的权重和SEO价值传递给新域名,适用于域名更换、HTTP转HTTPS。
- 临时性重定向 (302 Redirect):表示这是一个临时的移动,搜索引擎会保留旧域名的排名,适用于临时维护、A/B测试等不希望影响SEO的场景。绝大多数情况下,您应该使用301。
通过服务器配置文件 (最推荐,性能最好)
这是最标准、最稳定的方法,因为它在请求到达网站程序之前就完成了重定向,对服务器资源消耗最小。
Apache服务器
您需要修改网站根目录下的 .htaccess 文件,如果文件不存在,请创建一个。
场景1:将 www.old.com 永久重定向到 www.new.com
# 开启重定向引擎
RewriteEngine On
# 将 www.old.com 的所有请求重定向到 www.new.com
RewriteCond %{HTTP_HOST} ^www\.old\.com [NC]
RewriteRule ^(.*)$ https://www.new.com/$1 [L,R=301]
场景2:将不带 www 的域名重定向到带 www 的域名 (SEO友好)

(图片来源网络,侵删)
RewriteEngine On
RewriteCond %{HTTP_HOST} ^yourdomain.com [NC]
RewriteRule ^(.*)$ https://www.yourdomain.com/$1 [L,R=301]
场景3:将 HTTP 重定向到 HTTPS (安全网站)
RewriteEngine On
# 如果不是HTTPS协议
RewriteCond %{HTTPS} off
# 并且请求的主机不是localhost (本地开发环境)
RewriteCond %{HTTP_HOST} !^localhost$
# 则重定向到HTTPS版本
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
场景4:同时实现 HTTP转HTTPS 和 统一www
RewriteEngine On
# 1. 将 http://yourdomain.com 重定向到 https://www.yourdomain.com
RewriteCond %{HTTP_HOST} ^yourdomain.com [NC]
RewriteRule ^(.*)$ https://www.yourdomain.com/$1 [L,R=301]
# 2. 将 http://www.yourdomain.com 重定向到 https://www.yourdomain.com
RewriteCond %{HTTP_HOST} ^www\.yourdomain\.com [NC]
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://www.yourdomain.com/$1 [L,R=301]
# 3. 将 https://yourdomain.com 重定向到 https://www.yourdomain.com
RewriteCond %{HTTP_HOST} ^yourdomain.com [NC]
RewriteCond %{HTTPS} on
RewriteRule ^(.*)$ https://www.yourdomain.com/$1 [L,R=301]
Nginx服务器
您需要修改 Nginx 的配置文件,通常是 /etc/nginx/nginx.conf 或站点配置文件 /etc/nginx/sites-available/yourdomain。
场景1:将 www.old.com 永久重定向到 www.new.com
server {
listen 80;
server_name www.old.com;
return 301 $scheme://www.new.com$request_uri;
}
# 如果也支持443端口
server {
listen 443 ssl;
server_name www.old.com;
ssl_certificate /path/to/your/fullchain.pem;
ssl_certificate_key /path/to/your/privkey.pem;
return 301 $scheme://www.new.com$request_uri;
}
场景2:将 HTTP 重定向到 HTTPS
server {
listen 80;
server_name yourdomain.com www.yourdomain.com;
return 301 https://$host$request_uri;
}
通过织梦后台的“自定义404页面” (适用于虚拟主机,无服务器权限)
如果您是使用虚拟主机,没有修改 .htaccess 或 Nginx 配置的权限,可以使用这个方法。
原理:将所有不存在的页面请求都重定向到首页,并在首页的模板中判断,如果是来自旧域名的请求,就执行跳转。
步骤:
- 织梦后台 -> 系统 -> 系统基本参数 -> 核心设置。
- 找到 “自定义错误页面” 选项,将值设置为
htm。 - 进入 模板 -> 默认模板管理 -> 模板文件列表。
- 找到并打开
htm文件,如果不存在,请创建一个。 - 在
htm文件中,写入以下PHP代码:
<?php
// 获取当前访问的域名
$host = $_SERVER['HTTP_HOST'];
// 定义需要重定向的旧域名
$old_domain = 'www.old.com';
// 如果访问的域名是旧域名,则进行301重定向
if ($host == $old_domain) {
// 重定向到新域名,保持原始路径
$new_url = 'https://www.new.com' . $_SERVER['REQUEST_URI'];
header("HTTP/1.1 301 Moved Permanently");
header("Location: $new_url");
exit();
}
// 如果不是旧域名,则显示正常的404页面
?>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">404 - 页面未找到</title>
</head>
<body>
<h1>抱歉,您访问的页面不存在!</h1>
<p><a href="/">返回首页</a></p>
</body>
</html>
- 更新缓存,并清空浏览器缓存测试。
优点:无需服务器权限,在虚拟主机上也能实现。 缺点:
- 性能稍差,因为每个请求(包括对不存在的页面的请求)都需要PHP解析。
- 只能处理对不存在的页面的请求,如果直接访问旧域名下的一个存在的页面(如
www.old.com/index.html),这个方法不会生效,此方法更适合作为补充或临时方案。
修改织梦首页模板 (最简单,但不推荐用于SEO)
这种方法非常简单,但严重不推荐用于域名更换或SEO优化,因为它只会在用户访问首页时跳转,对搜索引擎爬虫和子页面无效。
步骤:
- 进入 模板 -> 默认模板管理 -> 主页模板 (
index.htm)。 - 在
<head>标签内加入以下代码:
<meta http-equiv="refresh" content="0;url=https://www.new.com/" />
或者使用JavaScript跳转:
<script> window.location.href="https://www.new.com/"; </script>
为什么不推荐?
- 对SEO无效:搜索引擎爬虫不会执行JavaScript,
<meta refresh>也不如301重定向传递权重。 - 不全面:只对首页有效,用户访问旧域名的任何子页面都不会跳转。
总结与推荐
| 方法 | 优点 | 缺点 | 推荐场景 |
|---|---|---|---|
| 服务器配置文件 | 性能最佳、最标准、对SEO最友好 | 需要服务器管理权限 | 域名更换、HTTP转HTTPS、统一www等所有正式场景 |
| 织梦自定义404页 | 无需服务器权限,可实现部分重定向 | 性能较差,仅对不存在的页面有效 | 虚拟主机用户,作为服务器配置的补充方案 |
| 修改首页模板 | 实现简单 | 对SEO无效,不全面,体验差 | 极不推荐,仅用于临时性的首页跳转测试 |
最终建议:
- 首选方法一:联系您的服务器提供商或使用SSH/VNC登录服务器,修改
.htaccess(Apache) 或 Nginx 配置文件,这是最专业、最可靠的解决方案。 - 如果无法操作服务器:再考虑方法二,即通过自定义404页面来实现。
- 尽量避免使用方法三,除非你只是想在首页做一个临时的欢迎页跳转。
完成配置后,请务必使用 301 Redirect Test 等在线工具进行检查,并清空浏览器缓存进行测试,确保重定向生效。
