如何在 Nginx 和 Apache 上创建 301 重定向
在本文中,我们将学习如何将 URL 或域名重定向到另一个地址。这可以通过使用 HTTP 重定向来实现。URL 重定向是一种常用的技术,用于将一个域名地址指向另一个域名地址,我们可以在 Apache 和 Nginx 上都实现这一点。
重定向到另一个域名
我们可能会遇到这种情况:我们已经建立了一个网站,并且需要更改网站的域名。在这里,我们不能通过删除旧域名来做到这一点,因为这可能会导致旧域名的内容损坏和消失,访问者将无法找到新位置的信息。这也可能导致旧域名流量的损失,从而导致已经建立的域名的信誉损失。
如果我们认为我们的原始域名是“mydomain.com”,并且我们应该购买一个类似的域名,例如“mydomain.net”或“mydomain.org”,则始终建议购买一个类似且与原始域名匹配的域名,以用于演示目的。
通用 SSL 重定向
目前,所有网络流量都重定向到 HTTPS (SSL),而不是标准 HTTP。使用重定向,我们可以将所有来自 http://mydomain.com 的网络流量重定向到 https://mydomain.com。
重定向方法
URL 重定向最常用和最常见的方法是 301(永久重定向)和 302(临时重定向)。
302 临时重定向
临时重定向将通知浏览器内容临时位于另一个位置,并在恢复后访问原始 URL 或网页。
例如,如果我们正在计划网站维护,并且想要将网站重定向以临时服务网络需求,我们将把所有来自您域名的网络流量重定向到维护页面,我们可以在该页面上向访问者提供有关维护的信息。
301 永久重定向
永久重定向将通知浏览器网站不再使用旧 URL 提供服务,应更新此信息并指向我们发布的新 URL。
例如,如果我们需要永久更改域名或将 URL 从旧位置永久更改到新位置,就像我们将内容永久移动到新位置一样。
在 Apache 上重定向
Apache 有不同的模块,我们可以使用 mod_alias 模块和 mod_rewrite 模块来实现重定向,这两个模块都可以广泛用于重定向网络。
在 Apache 上配置重定向
Apache 可以使用简单的“Redirect”指令进行配置,该指令包含在“mod_alias”模块中,此重定向需要两个参数,一个是旧 URL,另一个是新 URL。
重定向的简单配置文件如下所示:
<VirtualHost *:80> ServerName www.olddomain.com Redirect / http://www.newdomain.com </VirtualHost> . <VirtualHost *:80> ServerName www.newdomain.com . . . </VirtualHost>
在上面的配置中,我们指示 Apache 将浏览器重定向到将对 olddomain.com 的网络请求重定向到 newdomain.com,此重定向仅适用于单个网页,不适用于整个网站。
默认情况下,建立的重定向是 302 临时重定向,永久重定向可以通过以下几行完成:
可以通过两种方式完成:
Redirect 301 /oldlocation http://www.newdomain2.com/newlocation or Redirect permanent /oldlocation http://www.newdomain2.com/newlocation
RedirectMatch 指令
如果我们需要重定向多个页面,可以使用“RedirectMatch”指令,该指令允许我们使用正则表达式指定与模式匹配的文件夹。它重定向整个目录,而不是单个页面。
RedirectMatch ^/images/(.*)$ http://images.example.com/$1
在上面的代码中,RedirectMatch 匹配括号内的模式,然后使用引用在重定向指令中使用值“$1”进行测试,“1”是第一个测试组,后续组按顺序从数字中获取。
在 Nginx 上重定向
在 Nginx 上重定向可以通过多种方式完成,但最常见的方法是为我们想要重定向的内容创建服务器块。
server { listen 800; server_name olddomain.com; return 301 $scheme://newdomain.com$request_uri; }
在上面的示例中,我们使用服务器块将对 olddomain.com 的请求重定向到 newdomain.com。
它将返回 URL 重定向中给出的状态代码,并将执行 URL 替换。
“$scheme” 变量用于将原始请求(即 http 或 https)重定向到新格式 URL 中的 301 永久重定向。
可以使用 rewrite 指令将文件夹重定向到单独的子域名或新域名,配置如下。
rewrite ^/images/(.*)$ http://docs.domain2.com/$1 redirect;
上述指令应放在 Nginx 配置的服务器块中,这将对 images 文件夹的请求发出临时重定向到我们指定的新的域名或子域名。
如果我们将上面的行的末尾的重定向更改为永久重定向,则重定向将永久完成。
rewrite ^/images/(.*)$ http://docs.domain2.com/$1 permanent;
在本文中,我们学习了如何将请求 URL 重定向到新位置。我们必须使用正确的重定向方法来优化重定向的使用,以维护网页的存在。此外,请确保在需要修改网站时它也能正常工作。