设为首页收藏本站
网站公告 | 这是第一条公告
     

 找回密码
 立即注册
缓存时间01 现在时间01 缓存数据 你是我生命中所能经历的,最最深切的感觉。

你是我生命中所能经历的,最最深切的感觉。

查看: 1049|回复: 4

使用Nginx创建临时和永久重定向的具体示例

[复制链接]

  离线 

TA的专栏

等级头衔

等級:晓枫资讯-列兵

在线时间
0 小时

积分成就
威望
0
贡献
44
主题
37
精华
0
金钱
126
积分
81
注册时间
2023-7-30
最后登录
2025-5-31

发表于 2024-7-3 08:09:45 | 显示全部楼层 |阅读模式
目录


  • 简介
  • 先决条件
  • 解决方案概述
  • 示例 1 — 迁移到不同的域
  • 示例2 —— 即使单页名称更改,也创建持久体验
  • 结论

简介

HTTP 重定向 是将一个域名或地址指向另一个的方法。有几种不同类型的重定向,每种对客户端浏览器意味着不同的事情。最常见的两种类型是临时重定向和永久重定向。
临时重定向(响应状态码 302 Found)在 URL 临时需要从不同位置提供服务时很有用。例如,如果您正在进行网站维护,您可能希望使用临时重定向,将您的域名重定向到一个解释页面,以通知您的访问者您很快就会回来。
另一方面,永久重定向(响应状态码 301 Moved Permanently)通知浏览器应该完全忘记旧地址,不再尝试访问它。当您的内容已经永久移动到新位置时,比如当您更改域名时,这是很有用的。
本指南将详细介绍如何在 Nginx 中实现每种重定向,并通过一些特定用例的示例进行说明。

先决条件

要按照本教程操作,您需要:
要按照本教程操作,您需要:

  • 安装了 Nginx 并设置为提供您的网站的服务器。您可以在 Ubuntu 22.04、Debian 或 CentOS 的教程中找到一些示例和说明。

解决方案概述

在 Nginx 中,您可以使用内置的
  1. rewrite
复制代码
指令实现大多数重定向。这个指令在新安装的 Nginx 上默认可用,可以用于创建临时重定向和永久重定向。在其最简单的形式中,它至少需要两个参数:旧的 URL 和新的 URL。
您可以使用以下行在服务器配置中实现临时重定向:
  1. server {
  2.     . . .
  3.     server_name www.domain1.com;
  4.     rewrite ^/$ http://www.domain2.com redirect;
  5.     . . .
  6. }
复制代码
这个重定向指示浏览器将对 www.domain1.com 的所有请求重定向到 www.domain2.com。然而,这个解决方案只适用于单个页面,而不适用于整个站点。要重定向多个页面,您可以使用 rewrite 指令与正则表达式来指定整个目录,而不仅仅是单个文件。
redirect 匹配括号中的正则表达式模式。然后使用 $1 表达式在重定向目标中引用匹配的文本,其中 1 是匹配文本的第一组。在更复杂的示例中,后续匹配的组按顺序编号。
例如,如果您想临时重定向 www.domain1.com 中的每个页面到 www.domain2.com,您可以使用以下内容:
  1. server {
  2.     . . .
  3.     server_name www.domain1.com;
  4.     rewrite ^/(.*)$ http://www.domain2.com/$1 redirect;
  5.     . . .
  6. }

  7. server {
  8.     . . .
  9.     server_name www.domain2.com;
  10.     . . .
  11. }
复制代码
默认情况下,
  1. rewrite
复制代码
指令建立临时重定向。如果您想创建永久重定向,可以通过在指令末尾用
  1. permanent
复制代码
替换
  1. redirect
复制代码
来实现,如下所示:
  1. rewrite ^/$ http://www.domain2.com permanent;
  2. rewrite ^/(.*)$ http://www.domain2.com/$1 permanent;
复制代码
让我们继续看一些具体的示例。

示例 1 — 迁移到不同的域

如果您已经建立了网站,并希望将您的域更改为新地址,最好不要只是放弃旧域。如果您的内容没有任何关于如何找到其新位置的指示,书签到您的网站和位于互联网其他页面上的链接将会失效。在没有重定向的情况下更改域将导致您的网站失去来自先前访问者和旧链接的流量。
在这个示例中,我们将配置从旧域 domain1.com 到新域 domain2.com 的重定向。我们将在这里使用永久重定向,因为旧域将被弃用,所有流量应该从现在开始转到新域。
假设您已经将您的网站配置为从名为 domain1.com 的单个域提供服务,并已在 Nginx 中进行了如下配置:
  1. server {
  2.     . . .
  3.     server_name domain1.com;
  4.     . . .
  5. }
复制代码
我们还假设您已经在
  1. domain2.com
复制代码
上提供了您未来版本的网站:
  1. server {
  2.     . . .
  3.     server_name domain2.com;
  4.     . . .
  5. }
复制代码
让我们更改
  1. domain1.com
复制代码
的服务器块配置文件,以添加永久重定向到
  1. domain2.com
复制代码
  1. server {
  2.     . . .
  3.     server_name domain1.com;
  4.     rewrite ^/(.*)$ http://domain2.com/$1 permanent;
  5.     . . .
  6. }
复制代码
我们使用 rewrite 指令添加了上述重定向。^/(.*)$ 正则表达式匹配 URL 中 / 后面的所有内容。例如,http://domain1.com/index.html 将被重定向到 http://domain2.com/index.html。为了实现永久重定向,我们只需在 rewrite 指令后面添加 permanent。

示例2 —— 即使单页名称更改,也创建持久体验

有时,有必要更改已发布并在您的网站上接收流量的单个页面的名称。仅更改名称将导致访问原始URL的访问者出现404 Not Found错误,但您可以通过使用重定向来避免这种情况。这可以确保已经将您的旧页面加为书签或通过搜索引擎上的过时链接找到它们的人仍然可以访问正确的页面。
假设您的网站分别有两个名为products.html和services.html的产品和服务页面。现在,您决定用名为offers.html的单个优惠页面替换这两个页面。我们将为products.html和services.html配置一个简单的重定向到offers.html。
我们假设您的网站配置如下:
  1. server {
  2.     . . .
  3.     server_name example.com www.example.com;
  4.     . . .
  5. }
复制代码
配置重定向就像使用两个重定向指令一样简单。
  1. server {
  2.     . . .
  3.     server_name example.com www.example.com;
  4.    
  5.     rewrite ^/products.html$ /offer.html permanent;
  6.     rewrite ^/services.html$ /offer.html permanent;
  7.     . . .
  8. }
复制代码
  1. rewrite
复制代码
指令接受需要重定向的原始地址以及新页面的目标地址。由于这里的更改不是临时的,我们在指令中也使用了
  1. permanent
复制代码
。您可以使用任意多个这样的重定向,以确保您的访问者在移动站点内容时不会看到不必要的404 Not Found错误。

结论

您现在具备将请求重定向到新位置的知识。请确保使用正确的重定向类型,因为临时重定向的不当使用可能会损害您的搜索排名。
HTTP重定向还有多种其他用途,包括强制使用安全的SSL连接(即使用https而不是http)以及确保所有访问者最终只会进入网站的www.前缀地址。
正确使用重定向将使您能够利用当前的网络存在,同时使您能够根据需要修改站点结构。如果您想了解更多关于如何重定向您的访问者的方法,Nginx在官方文档的重写模块部分和创建重定向的官方博客文章中都有很好的文档。
以上就是使用Nginx创建临时和永久重定向的具体示例的详细内容,更多关于Nginx创建临时和永久重定向的资料请关注晓枫资讯其它相关文章!

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
晓枫资讯-科技资讯社区-免责声明
免责声明:以上内容为本网站转自其它媒体,相关信息仅为传递更多信息之目的,不代表本网观点,亦不代表本网站赞同其观点或证实其内容的真实性。
      1、注册用户在本社区发表、转载的任何作品仅代表其个人观点,不代表本社区认同其观点。
      2、管理员及版主有权在不事先通知或不经作者准许的情况下删除其在本社区所发表的文章。
      3、本社区的文章部分内容可能来源于网络,仅供大家学习与参考,如有侵权,举报反馈:点击这里给我发消息进行删除处理。
      4、本社区一切资源不代表本站立场,并不代表本站赞同其观点和对其真实性负责。
      5、以上声明内容的最终解释权归《晓枫资讯-科技资讯社区》所有。
http://bbs.yzwlo.com 晓枫资讯--游戏IT新闻资讯~~~

  离线 

TA的专栏

等级头衔

等級:晓枫资讯-列兵

在线时间
0 小时

积分成就
威望
0
贡献
0
主题
0
精华
0
金钱
18
积分
16
注册时间
2022-12-29
最后登录
2022-12-29

发表于 2025-3-28 12:52:34 | 显示全部楼层
感谢楼主,顶。
http://bbs.yzwlo.com 晓枫资讯--游戏IT新闻资讯~~~

  离线 

TA的专栏

等级头衔

等級:晓枫资讯-列兵

在线时间
0 小时

积分成就
威望
0
贡献
0
主题
0
精华
0
金钱
16
积分
12
注册时间
2022-12-27
最后登录
2022-12-27

发表于 2025-3-31 05:36:36 | 显示全部楼层
顶顶更健康!!!
http://bbs.yzwlo.com 晓枫资讯--游戏IT新闻资讯~~~

  离线 

TA的专栏

  • 打卡等级:无名新人
  • 打卡总天数:1
  • 打卡月天数:0
  • 打卡总奖励:9
  • 最近打卡:2024-09-01 03:16:05
等级头衔

等級:晓枫资讯-列兵

在线时间
0 小时

积分成就
威望
0
贡献
0
主题
0
精华
0
金钱
25
积分
8
注册时间
2023-11-26
最后登录
2024-9-1

发表于 2025-3-31 23:55:49 | 显示全部楼层
感谢楼主分享。
http://bbs.yzwlo.com 晓枫资讯--游戏IT新闻资讯~~~

  离线 

TA的专栏

等级头衔

等級:晓枫资讯-列兵

在线时间
0 小时

积分成就
威望
0
贡献
0
主题
0
精华
0
金钱
19
积分
18
注册时间
2022-12-27
最后登录
2022-12-27

发表于 2025-4-21 10:49:26 | 显示全部楼层
路过,支持一下
http://bbs.yzwlo.com 晓枫资讯--游戏IT新闻资讯~~~
严禁发布广告,淫秽、色情、赌博、暴力、凶杀、恐怖、间谍及其他违反国家法律法规的内容。!晓枫资讯-社区
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

1楼
2楼
3楼
4楼
5楼

手机版|晓枫资讯--科技资讯社区 本站已运行

CopyRight © 2022-2025 晓枫资讯--科技资讯社区 ( BBS.yzwlo.com ) . All Rights Reserved .

晓枫资讯--科技资讯社区

本站内容由用户自主分享和转载自互联网,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。

如有侵权、违反国家法律政策行为,请联系我们,我们会第一时间及时清除和处理! 举报反馈邮箱:点击这里给我发消息

Powered by Discuz! X3.5

快速回复 返回顶部 返回列表