如何使用 NGINX 重定向 URL? (临时和永久)

已发表: 2024-01-26

目录
什么是重定向?
Nginx 重定向需要什么?
常见的Nginx重定向方法(临时和永久)
如何使用 Nginx 重定向 URL(临时和永久)
检查 Nginx 语法
重新启动 Nginx 服务器
概括
经常问的问题

什么是重定向?

对于 Nginx,重定向是一种 Web 服务器功能,将网站流量从一个 URL 转移到另一个 URL。 它是最有用的功能之一,通过它您可以轻松地将访问者自动重定向到另一个位置。

尽管您可以执行多种类型的重定向,但最重要和最常用的两种是永久重定向 (301) 和临时重定向 (302)。

在这篇文章中,我们将通过示例向您展示重定向方法,例如从 www 到非 www、Nginx 重定向到域、Nginx 从 HTTP 重定向到 HTTPS 等。


阅读: WordPress 重定向 URL 是如何工作的? 5 种最佳方法


Nginx 重定向需要什么?

  • Nginx 提供了一项关键功能,即根据标准将网站 URL 重定向到另一个地址。
  • Nginx 重定向非常用户友好且易于配置,因此管理网站 URL 非常灵活。
  • 它对于保留页面的 SEO 排名非常有用,特别是当您从一个 CMS 迁移到另一个 CMS 时。
  • 尽管 URL 结构发生了变化,重定向功能还有助于保留 SERP 位置。

常见的Nginx重定向方法(临时和永久)

正如我们已经提到的,有多种类型的重定向方法可用,但在实践中,常用的只有两种,即临时重定向和永久重定向。

临时重定向(响应代码:302 Found)

  • 从名称本身,您就可以预见临时药物的作用。 好吧,此方法的目的是暂时将页面的位置从一个地方更改到另一个地方。
  • 响应代码:302 Found 用于显示这些重定向期间页面的临时转发。
  • 主要用于网站维护时; 临时重定向会通知流量或用户网站暂时不可用。
  • 它还可用于将不完整的页面重定向到另一个点或主页。
  • 示例场景:访问者导航到网站页面,但由于维护,他们被重定向到指示网站当前正在维护的通知。
Temporary Redirection
临时重定向(响应代码:302 Found)

永久重定向(响应代码:301 Found)

  • 永久Nginx重定向用于永久重新定位页面域。
  • 301 重定向用于指定页面在此上下文中的永久移动。
  • 这种重定向主要用于当用户想要更改域名并且不再希望网站流量访问旧位置时。
Permanent Redirection
永久重定向(响应代码:301 Found)

如何使用 Nginx 重定向 URL(临时和永久)

在开始之前,首先您需要确保您的 VPS 或虚拟专用服务器上安装了 NGINX。 之后通过 SSH 访问您的 VPS。 在 Wpoven,您可以通过 SSH 命令行控制台轻松访问您的站点。


阅读:我可以通过 SSH 访问我的 WPOven 网站吗


NGINX 的配置设置

  • NGINX 配置文件位置: NGINX 的配置通常存储在 .conf 文件中,该文件是一个包含服务器指令和设置的纯文本文件。
  • 默认位置: NGINX 配置文件的默认位置通常位于站点的文档根目录中。 在本例中,它提到了路径: /etc/nginx/sites-available/directory_name.conf
  • 文档根目录:此目录是存储网站文件的位置。 文档根目录可能会有所不同; 对于单站点服务器,它可能位于/html目录中。 如果您的服务器托管多个站点,则文档根目录可能位于特定的域目录中,例如/domain.com
  • 配置文件命名: .conf 文件的名称与您的站点相对应。 例如,如果您的站点位于/html目录中,则 .conf 文件可能会命名为html.conf 。 如果它位于/domain.com等目录中,则 .conf 文件可以命名为domain.com.conf
  • 默认配置文件:/etc/nginx/sites-available/directory中,通常有一个默认文件可以用作模板。 该文件可能包含您可以复制或修改以满足您的需要的基本配置。
  • 创建新的配置文件:或者,您可以选择创建新的 .conf 文件。 例如,您可以根据站点的结构和命名约定创建名为html.confdomain.com.conf的文件。

您可能会惊讶地发现,在 Nginx 中,有一个内置工具可用,称为“重写”指令。 这是一个非常方便的工具,可以轻松进行重定向。 最好的部分是你不需要对此做任何特别的事情,每当你安装新的 Nginx 时它就会自动出现。

这个“重写”指令不仅仅用于执行基本的重定向,而且它的用途非常广泛。 即您将能够创建两种类型的重定向:永久重定向和临时重定向。

您所要做的就是仅传递两个参数:旧 URL 和新 URL。 以下是一些示例供您参考。 只需在服务器配置中输入以下行即可。

首先,通过在终端中输入以下命令来打开配置文件。

$ sudo vi /etc/nginx/nginx.conf

之后根据您的要求使用下面给出的命令。

1. 页面到页面 Nginx 重定向

临时页面到页面 Nginx 重定向

server {
# Temporary redirect to an individual page
rewrite ^/oldpage$ http://www.example.com/newpage redirect;
}

永久页到页 Nginx 重定向

server {
# Permanent redirect to an individual page
rewrite ^/oldpage$ http://www.example.com/newpage permanent;
}

从上面的命令中,您已经注意到,如果您想创建永久重定向,您需要做的就是将指令末尾的“redirect”替换为“permanent”。

2.WWW到非www的Nginx重定向

永久 www 到非 www 重定向:

server {
# Permanent redirect to non-www
server_name www.example.com;
rewrite ^/(.*)$ http://example.com/$1 permanent;
}


注意:如果您想从非 www 重定向到 www,只需替换上述命令中提到的网站 URL 即可。 即用 example.com 替换 www.example.com,反之亦然。


3. Nginx中如何将URL从HTTP重定向到HTTPS?

在执行此重定向之前,不要忘记安装 SSL 证书。 重定向到 HTTPS 有它的好处。 它有助于保护您的网站免受所有 MIMT 攻击、数据盗窃等。甚至它们的端口也不同,例如 HTTP 使用 80 端口,而 HTTPS 使用 443。

因此,为了保护您和访问者之间共享的所有敏感信息,您需要以下命令:

server {
listen 80;
server_name www.domain.tld;
return 301 https://www.domain.tld$request_uri;
}

4. Nginx 将 URL 重定向到另一个 URL

如果您希望永久重定向(即 nginx 重定向到另一个 URL 301),请使用以下命令:

从旧域到新域,

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

或者

server {
# Permanent redirect to new URL
listen 443 ssl;
# Add this line to listen on the HTTPS port and enable SSL server_name olddomain.com;
ssl_certificate /path/to/your/ssl_certificate.crt; # Update with the actual path to your SSL certificate
ssl_certificate_key /path/to/your/ssl_certificate_key.key; # Update with the actual path to your SSL certificate key
# Additional SSL settings can be configured here
rewrite ^/(.*)$ https://newdomain.com/$1 permanent;
# Update to use 'https' protocol
}

  • 我们使用 Nginx 中名为“rewrite”指令的工具为我们的网站设置了重定向。
  • ^/(.*)$是一个正则表达式,它将使用 URL 中最后一个斜杠 ( / ) 之后的所有内容。
  • 例如,如果有人尝试访问http://olddomain.com/index.html ,它将使用index.html部分。
  • 因此,如果您要访问http://olddomain.com/index.html ,它会顺利地将您重定向到http://newdomain.com/index.html
  • 其想法是将用户无缝重定向到新域上的相同内容。
  • 为了确保此重定向是永久性的,我们在rewrite指令后添加了一个特殊的关键字“Permanent”。
  • 这使用所谓的 HTTP 301 状态代码告诉浏览器和搜索引擎这是永久性更改。

5.Nginx重定向到另一个域而不改变URL

假设您要将域 olddomain.com 重定向到 newdomain.com 而不更改 URL。 这意味着当您输入olddomain.com时,它应该重定向到newdomain.com,但URL仍应显示olddomain.com。

这是您可以采取的方法,

server {
listen 80;
server_name olddomain.com;

location / {
proxy_pass http://newdomain.com;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_redirect off;
}
}

6. 特定站点 Nginx 重定向

server {
listen 80;
server_name example.com;
return 301 http://newexample.com$request_uri;
}


检查 Nginx 语法

要检查所有 nginx 语法是否正确,请使用以下命令:

nginx -t

如果输出结果为空,则说明语法正确,需要重启Nginx服务器才能使修改生效。


重新启动 Nginx 服务器

不要忘记使用以下命令重新启动 Nginx 服务器以使这些规则生效:

sudo systemctl restart Nginx


概括

如上所述,Nginx 被证明是最强大且用户友好的 Web 服务器,可让您轻松进行永久和临时 Nginx 重定向。

阅读此博客后,现在您知道如何使用 NGINX 创建重定向 URL。 nginx 是否从 HTTP 重定向到 HTTPS、从一个域重定向到另一个域等。

此外,您还了解了重定向如何影响您的 SEO 排名,因此请始终确保使用正确的重定向类型。

有了这个有用的功能,您可以根据趋势和要求轻松更改网站结构,而不必担心流量和 SERP 排名损失。

WPOven 为您的下一个 NGINX 项目提供 WordPress 管理的托管选项。 联系我们讨论最适合您的选择。

如果您有任何疑问或建议,请在下面的评论部分告诉我们:


经常问的问题

如何在 nginx 中重定向 URL?

在 Nginx 中,有一个内置工具可用,称为“重写”指令。 这是一个非常方便的工具,可以轻松进行重定向。 最好的部分是你不需要对此做任何特别的事情,每当你安装新的 Nginx 时它就会自动出现。

Nginx 的重定向代码是什么?

nginx 非常通用,它提供两种类型的重定向,永久重定向,其响应代码为 301,临时重定向响应代码为 302。

NGINX 有何用途?

Nginx 是一个多功能、高性能的 Web 服务器和反向代理服务器。 它通常用于以下用途: Web 服务器反向代理服务器、负载均衡器、 SSL/TLS 终止缓存内容分发网络 (CDN)API 网关WebSocket 支持安全性高可用性架构