织梦网站301重定向怎么做?

99ANYc3cd6
预计阅读时长 22 分钟
位置: 首页 织梦建站 正文

什么是301重定向?

301重定向是一种永久性的网页跳转,当搜索引擎或用户访问一个旧URL时,服务器会自动将其引导到新的URL,并且告诉搜索引擎“这个页面已经永久搬家了,请把旧URL的权重和排名都传递给新URL”。

织梦网站301重定向
(图片来源网络,侵删)

这对于SEO至关重要,可以避免因URL变更(如改版、更换域名、URL规范化)导致的流量和排名损失。


织梦网站301重定向的常见场景

  1. 域名更换:从 olddomain.com 迁移到 newdomain.com
  2. URL规范化:强制将带 www 的域名(如 www.example.com)重定向到不带 www 的(如 example.com),或者反之。
  3. HTTP升级到HTTPS:将所有HTTP流量强制跳转到HTTPS。
  4. 目录或页面变更:将 /old-category/ 目录下的所有页面永久重定向到 /new-category/
  5. 移动端适配:将旧版手机站URL重定向到新版响应式URL或新的手机域名。

织梦301重定向的几种方法(按推荐顺序)

使用服务器配置文件(最推荐、最彻底)

这是最标准、最有效的方法,因为它在请求到达PHP程序之前就完成了重定向,效率最高,也最符合搜索引擎的期望。

Apache服务器

如果你使用的是Apache服务器,并且开启了 mod_rewrite 模块(虚拟主机一般都默认开启),请按以下步骤操作:

步骤1:找到并编辑 .htaccess 文件

织梦网站301重定向
(图片来源网络,侵删)

织梦程序的根目录下通常有一个名为 .htaccess 文件,如果没有,你需要手动创建一个。

步骤2:在 .htaccess 文件中添加重定向规则

根据你的需求,在文件顶部添加相应的代码。

场景A:将带www的域名重定向到不带www的域名

织梦网站301重定向
(图片来源网络,侵删)
# 将 www.example.com 重定向到 example.com
RewriteEngine On
RewriteCond %{HTTP_HOST} ^www\.example\.com [NC]
RewriteRule ^(.*)$ http://example.com/$1 [L,R=301]

场景B:将不带www的域名重定向到带www的域名

# 将 example.com 重定向到 www.example.com
RewriteEngine On
RewriteCond %{HTTP_HOST} ^example\.com [NC]
RewriteRule ^(.*)$ http://www.example.com/$1 [L,R=301]

场景C:将HTTP重定向到HTTPS(推荐同时处理带www和不带www的情况)

# 将所有HTTP请求重定向到HTTPS
RewriteEngine On
RewriteCond %{SERVER_PORT} 80
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

场景D:同时处理HTTP到HTTPS和域名规范化(不带www -> 带www)

这是一个非常常见的组合,代码可以这样写:

# 强制使用HTTPS和带www的域名
RewriteEngine On
# 1. 如果不是HTTPS,则重定向到HTTPS
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
# 2. 如果是HTTPS但不带www,则重定向到带www的HTTPS
RewriteCond %{HTTP_HOST} ^example\.com [NC]
RewriteRule ^(.*)$ https://www.example.com/$1 [L,R=301]

场景E:更换域名(olddomain.com -> newdomain.com)

# 将 olddomain.com 的所有内容重定向到 newdomain.com
RewriteEngine On
RewriteCond %{HTTP_HOST} ^olddomain\.com [NC,OR]
RewriteCond %{HTTP_HOST} ^www\.olddomain\.com [NC]
RewriteRule ^(.*)$ https://newdomain.com/$1 [L,R=301]

Nginx服务器

如果你使用的是Nginx,请编辑网站的配置文件(通常在 /usr/local/nginx/conf/vhost/ 目录下,文件名是你的域名.conf)。

步骤1:找到并编辑服务器配置文件

步骤2:在 server 块中添加重定向规则

场景A:将带www的域名重定向到不带www的域名

server {
    listen 80;
    server_name www.example.com;
    # 将 www.example.com 的所有请求重定向到 example.com
    return 301 http://example.com$request_uri;
}
server {
    listen 80;
    server_name example.com;
    # 这里是你网站的正常配置...
    root /home/wwwroot/example.com;
    index index.php index.html;
    # ... 其他配置
}

场景B:将HTTP重定向到HTTPS

# 处理HTTP请求,强制跳转到HTTPS
server {
    listen 80;
    server_name example.com www.example.com;
    return 301 https://$host$request_uri;
}
# 处理HTTPS请求
server {
    listen 443 ssl;
    server_name example.com www.example.com;
    ssl_certificate /path/to/your/fullchain.pem;
    ssl_certificate_key /path/to/your/private.key;
    # 这里是你网站的正常HTTPS配置...
    root /home/wwwroot/example.com;
    index index.php index.html;
    # ... 其他配置
}

场景C:更换域名

server {
    listen 80;
    server_name olddomain.com www.olddomain.com;
    return 301 https://newdomain.com$request_uri;
}

修改织梦程序文件(适用于无法修改服务器配置的情况)

如果你无法访问服务器配置文件(如使用虚拟主机且没有 .htaccess 权限),可以通过修改织梦的核心文件来实现。

注意: 此方法在PHP层面执行,效率略低于服务器配置,且织梦升级后可能需要重新修改。

步骤1:找到并修改 index.php 文件

打开织梦网站根目录下的 index.php 文件。

步骤2:在文件开头添加重定向代码

<?php 这行代码之后,其他代码之前,添加你的重定向逻辑。

示例:强制HTTPS和带www域名

<?php
// -------------------------- 在这里添加重定向代码 --------------------------
// 获取当前域名和协议
$host = $_SERVER['HTTP_HOST'];
$protocol = isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] === 'on' ? 'https' : 'http';
// 规则1:如果不是HTTPS,则重定向到HTTPS
if ($protocol == 'http') {
    $new_url = 'https://' . $host . $_SERVER['REQUEST_URI'];
    header("HTTP/1.1 301 Moved Permanently");
    header("Location: $new_url");
    exit();
}
// 规则2:如果是HTTPS但不带www,则重定向到带www的HTTPS
if (strpos($host, 'www.') !== 0) {
    $new_url = 'https://www.' . $host . $_SERVER['REQUEST_URI'];
    header("HTTP/1.1 301 Moved Permanently");
    header("Location: $new_url");
    exit();
}
// -------------------------- 重定向代码结束 --------------------------
require_once (dirname(__FILE__) . "/include/common.inc.php");
require_once DEDEINC."/arc.partview.class.php";
$GLOBALS['arcs'] = array();
$row = $dsql->GetOne("Select * From `dede_homepageset`");
$row['templet'] = MfTemplet($row['templet']);
$pv = new PartView();
$pv->SetTemplet($cfg_basedir . $cfg_templets_dir . "/" . $row['templet']);
$pv->Display();
?>

说明:

  • header("Location: $new_url"); 执行跳转。
  • exit();die(); 在执行跳转后终止脚本执行,非常重要。
  • 这种方法虽然可以实现,但不如服务器配置文件来得干净利落,且只在首页入口生效,对于直接访问子页面(如 about.php)的情况可能需要额外处理。

使用织梦后台的“自定义404页面”(不推荐用于301)

织梦后台有一个“自定义404页面”功能,但这个功能是用来处理“页面不存在”的情况(返回404状态码),不适合用来做301永久重定向,错误使用会导致SEO问题,请务必不要混淆。


验证301重定向是否生效

设置完成后,必须进行验证,确保重定向正确且返回了301状态码。

  1. 使用在线工具

    • 访问 SEO综合查询工具
    • 输入你的旧URL,http://www.example.com/old-page.html
    • 查看结果,在“状态码”一栏,应该显示 301,跳转URL”一栏会显示你的新URL,https://www.example.com/new-page.html
  2. 使用浏览器开发者工具

    • F12 打开开发者工具,切换到 “Network”(网络)选项卡。
    • 勾选 “Disable cache”(禁用缓存)。
    • 在浏览器地址栏输入旧URL并回车。
    • 在网络请求列表中找到对应的请求,点击查看详情。
    • 在 “Headers”(标头)选项卡中,找到 “Status Code”,它应该显示 301 Moved Permanently
  3. 使用命令行工具(高级用户)

    • 在Linux或macOS终端中使用 curl 命令:
      curl -I http://www.example.com/old-page.html
    • 在Windows的命令提示符中使用:
      curl -I http://www.example.com/old-page.html
    • 查看输出结果,找到 HTTP/1.1 301 Moved Permanently 这一行。

总结与建议

方法 优点 缺点 推荐场景
服务器配置 效率最高、最标准、最稳定、SEO友好 需要服务器管理权限 所有场景,尤其是域名更换和HTTPS升级
修改程序文件 无需服务器权限,逻辑灵活 效率较低,升级后可能失效,不易维护 无法修改服务器配置时的临时方案或特定需求

最佳实践:

  1. 首选服务器配置文件(.htaccess 或 Nginx 配置),这是最专业、最可靠的方法。
  2. 对于域名更换,请务必将所有旧域名(带www和不带www)以及HTTP版本都重定向到新域名的HTTPS版本。
  3. 设置完成后,务必使用工具进行验证,确保状态码为301。
  4. 重定向设置生效后,保持一段时间(如几个月),以便搜索引擎充分传递权重,之后可以在Google Search Console和Bing Webmaster Tools中提交更改通知。

希望这份详细的指南能帮助你成功完成织梦网站的301重定向!

-- 展开阅读全文 --
头像
C语言中string究竟指什么?
« 上一篇 前天
织梦首页如何调用字段?
下一篇 » 前天

相关文章

取消
微信二维码
支付宝二维码

目录[+]