服务器之家:专注于VPS、云服务器配置技术及软件下载分享
分类导航

云服务器|WEB服务器|FTP服务器|邮件服务器|虚拟主机|服务器安全|DNS服务器|服务器知识|Nginx|IIS|Tomcat|

服务器之家 - 服务器技术 - Nginx - 使用Nginx创建临时和永久重定向的具体示例

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

2024-07-03 16:15白如意i Nginx

HTTP 重定向 是将一个域名或地址指向另一个的方法,有几种不同类型的重定向,每种对客户端浏览器意味着不同的事情,最常见的两种类型是临时重定向和永久重定向,本文给大家介绍了使用Nginx创建临时和永久重定向的具体示例,需要的

简介

HTTP 重定向 是将一个域名或地址指向另一个的方法。有几种不同类型的重定向,每种对客户端浏览器意味着不同的事情。最常见的两种类型是临时重定向和永久重定向。

临时重定向(响应状态码 302 Found)在 URL 临时需要从不同位置提供服务时很有用。例如,如果您正在进行网站维护,您可能希望使用临时重定向,将您的域名重定向到一个解释页面,以通知您的访问者您很快就会回来。

另一方面,永久重定向(响应状态码 301 Moved Permanently)通知浏览器应该完全忘记旧地址,不再尝试访问它。当您的内容已经永久移动到新位置时,比如当您更改域名时,这是很有用的。

本指南将详细介绍如何在 Nginx 中实现每种重定向,并通过一些特定用例的示例进行说明。

先决条件

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

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

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

解决方案概述

在 Nginx 中,您可以使用内置的 rewrite 指令实现大多数重定向。这个指令在新安装的 Nginx 上默认可用,可以用于创建临时重定向和永久重定向。在其最简单的形式中,它至少需要两个参数:旧的 URL 和新的 URL。

您可以使用以下行在服务器配置中实现临时重定向:

server {
    . . .
    server_name www.domain1.com;
    rewrite ^/$ http://www.domain2.com redirect;
    . . .
}

这个重定向指示浏览器将对 www.domain1.com 的所有请求重定向到 www.domain2.com。然而,这个解决方案只适用于单个页面,而不适用于整个站点。要重定向多个页面,您可以使用 rewrite 指令与正则表达式来指定整个目录,而不仅仅是单个文件。

redirect 匹配括号中的正则表达式模式。然后使用 $1 表达式在重定向目标中引用匹配的文本,其中 1 是匹配文本的第一组。在更复杂的示例中,后续匹配的组按顺序编号。

例如,如果您想临时重定向 www.domain1.com 中的每个页面到 www.domain2.com,您可以使用以下内容:

server {
    . . .
    server_name www.domain1.com;
    rewrite ^/(.*)$ http://www.domain2.com/$1 redirect;
    . . .
}

server {
    . . .
    server_name www.domain2.com;
    . . .
}

默认情况下,rewrite 指令建立临时重定向。如果您想创建永久重定向,可以通过在指令末尾用 permanent 替换 redirect 来实现,如下所示:

rewrite ^/$ http://www.domain2.com permanent;
rewrite ^/(.*)$ http://www.domain2.com/$1 permanent;

让我们继续看一些具体的示例。

示例 1 — 迁移到不同的域

如果您已经建立了网站,并希望将您的域更改为新地址,最好不要只是放弃旧域。如果您的内容没有任何关于如何找到其新位置的指示,书签到您的网站和位于互联网其他页面上的链接将会失效。在没有重定向的情况下更改域将导致您的网站失去来自先前访问者和旧链接的流量。

在这个示例中,我们将配置从旧域 domain1.com 到新域 domain2.com 的重定向。我们将在这里使用永久重定向,因为旧域将被弃用,所有流量应该从现在开始转到新域。

假设您已经将您的网站配置为从名为 domain1.com 的单个域提供服务,并已在 Nginx 中进行了如下配置:

server {
    . . .
    server_name domain1.com;
    . . .
}

我们还假设您已经在 domain2.com 上提供了您未来版本的网站:

server {
    . . .
    server_name domain2.com;
    . . .
}

让我们更改 domain1.com 的服务器块配置文件,以添加永久重定向到 domain2.com

server {
    . . .
    server_name domain1.com;
    rewrite ^/(.*)$ http://domain2.com/$1 permanent;
    . . .
}

我们使用 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。

我们假设您的网站配置如下:

server {
    . . .
    server_name example.com www.example.com;
    . . .
}

配置重定向就像使用两个重定向指令一样简单。

server {
    . . .
    server_name example.com www.example.com;
    
    rewrite ^/products.html$ /offer.html permanent;
    rewrite ^/services.html$ /offer.html permanent;
    . . .
}

rewrite指令接受需要重定向的原始地址以及新页面的目标地址。由于这里的更改不是临时的,我们在指令中也使用了permanent。您可以使用任意多个这样的重定向,以确保您的访问者在移动站点内容时不会看到不必要的404 Not Found错误。

结论

您现在具备将请求重定向到新位置的知识。请确保使用正确的重定向类型,因为临时重定向的不当使用可能会损害您的搜索排名。

HTTP重定向还有多种其他用途,包括强制使用安全的SSL连接(即使用https而不是http)以及确保所有访问者最终只会进入网站的www.前缀地址。

正确使用重定向将使您能够利用当前的网络存在,同时使您能够根据需要修改站点结构。如果您想了解更多关于如何重定向您的访问者的方法,Nginx在官方文档的重写模块部分和创建重定向的官方博客文章中都有很好的文档。

以上就是使用Nginx创建临时和永久重定向的具体示例的详细内容,更多关于Nginx创建临时和永久重定向的资料请关注服务器之家其它相关文章!

原文链接:https://blog.csdn.net/rubys007/article/details/139378738

延伸 · 阅读

精彩推荐
  • Nginx本地HTTPS环境搭建的完整步骤记录

    本地HTTPS环境搭建的完整步骤记录

    这篇文章主要给大家介绍了关于本地HTTPS环境搭建的相关资料,文中通过示例代码将实现的步骤一步步介绍的非常详细,对大家的学习或者工作具有一定的...

    zhangfe5342019-12-17
  • Nginxnginx使用IPV6的相关配置项介绍

    nginx使用IPV6的相关配置项介绍

    这篇文章主要介绍了nginx使用IPV6的相关配置项介绍,首先查看编译参数是否编译了IPV6模块,然后介绍了监听IPV6的配置语法,需要的朋友可以参考下 ...

    nginx配置网5922019-10-22
  • Nginx超级详细的nginx负载均衡配置

    超级详细的nginx负载均衡配置

    所谓负载均衡就是就是把大量的请求按照我们指定的方式均衡的分配给集群中的每台服务器,从而不会产生集群中大量请求只请求某一台服务器,从而使该服...

    小码农叔叔5892022-08-07
  • NginxNginx与Tomcat实现动静态分离和负载均衡

    Nginx与Tomcat实现动静态分离和负载均衡

    本篇文章主要介绍了Nginx与Tomcat实现动静态分离和负载均衡,具有一定的参考价值,感兴趣的小伙伴们可以参考一下。 ...

    魔流剑3132019-11-15
  • Nginx神器!最佳 Nginx 日志分析工具 GoAccess

    神器!最佳 Nginx 日志分析工具 GoAccess

    非常小又精悍的 Nginx 日志分析工具 GoAccess,今天在 CentOS VPS 上安装测试了一番,就2个字,神器! ...

    Nginx技术网6552019-10-16
  • Nginxnginx location匹配实例详解

    nginx location匹配实例详解

    这篇文章主要介绍了nginx location匹配实例详解的相关资料,需要的朋友可以参考下 ...

    heshan3072112019-11-29
  • NginxNginx服务器添加Systemd自定义服务过程解析

    Nginx服务器添加Systemd自定义服务过程解析

    这篇文章主要介绍了Nginx服务器添加Systemd自定义服务过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的...

    _不正11172021-01-05
  • Nginx详解Nginx虚拟主机配置中server_name的具体写法

    详解Nginx虚拟主机配置中server_name的具体写法

    这篇文章主要介绍了Nginx虚拟主机配置中server_name的具体写法,server_name服务器名是虚拟主机中必须配置的重要参数,需要的朋友可以参考下 ...

    onlyzq4682019-11-11