如何在Nginx和Apache上创建301重定向

在本文中,我们将学习如何将URL或域重定向到另一个地址。这可以通过使用HTTP重定向来完成。URL重定向是一种流行的技术,可以将一个域地址指向另一个域地址,我们可以在Apache和Nginx上同时实现。

重定向到另一个域

我们可能会遇到以下情况:我们已经建立了一个网站,而我们需要更改该网站的域。在这里,我们无法通过删除旧域来做到这一点,因为这可能会导致旧域上的内容损坏和消失,并且访问者无法获得有关如何查找新位置的任何信息。这也可能导致旧域的流量丢失,从而导致已经建立的域的信誉丧失。

如果我们认为原始域名为“ mydomain.com”,并且我们应该购买类似“ mydomain.net”的域名,则始终建议购买一个与原始域名相近且与原始域名匹配的相似站点域名,以进行演示。或“ mydomain.org”。

常规重定向到SSL

当前,所有Web流量重定向到HTTPS(SSL)的替代代替了标准HTTP。使用重定向,我们可以将来自http://mydomain.com的所有网络流量转移到https://mydomain.com。

重定向方法

URL重定向最常用的方法是301(永久重定向)和302(临时重定向)。

302临时重定向

临时重定向将通知浏览器该内容是临时位于其他位置,并且还原后将访问原始URL或网页。

例如,如果我们正在计划进行站点维护,并且我们想临时重定向站点以满足网络需求,我们会将所有网络流量从您的域重定向到维护页面,在此我们可以向访问者提供有关维护的信息。

301永久重定向

永久重定向将通知浏览器该网站不再可用旧的URL,并且此信息应进行更新,并指向我们发布的新URL。

例如,如果我们需要更改域,或者需要将URL从旧位置永久更改为新位置,就好像将内容永久地移动到新位置一样。

在Apache上重定向

Apache有不同的模块,我们可以使用mod_alias模块和mod_rewrite模块来实现重定向,这些模块可用于广泛地重定向Web。

在Apache上配置重定向

可以使用“重定向”指令(包含在“ mod_alias”模块中的“重定向”模块)为Apache配置简单重定向,此重定向需要两个参数,一个是旧URL,另一个是新URL。

重定向的简单配置文件如下代码所示–

<VirtualHost *:80>
   ServerName www.olddomain.com
   Redirect / http://www.newdomain.com
</VirtualHost>
.
<VirtualHost *:80>
   ServerName www.newdomain.com
   . . .
</VirtualHost>

在上述配置中,我们指示apache重定向浏览器以将来自olddomain.com的Web请求定向到newdomain.com,并且此重定向仅针对单个网页,而不适用于整个网站。

默认情况下,对于临时重定向,建立的重定向为302,对于永久重定向,可以使用以下几行完成

它可以通过2种方式完成–

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 ^/images/(.*)$ http://docs.domain2.com/$1 redirect;

上面的指令应放置在Nginx配置的服务器块中,该块将发出临时请求,将对images文件夹的请求重定向到我们指定的新域或子域。

如果在上述行的末尾将重定向更改为永久重定向,则重定向将永久完成。

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

在以上文章中,我们学习了如何将请求URL的网页重定向到新位置。我们必须使用正确使用重定向的方法,以最佳方式使用重定向来维持网页的存在。另外,在需要修改站点时,请确保其有效。