当前位置: 首页 > 编程笔记 >

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

邢俊悟
2023-03-14
本文向大家介绍如何在Nginx和Apache上创建301重定向,包括了如何在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的网页重定向到新位置。我们必须使用正确使用重定向的方法,以最佳方式使用重定向来维持网页的存在。另外,在需要修改站点时,请确保其有效。

 类似资料:
  • 我已经使用Apache301重定向到“重定向”实现了SEO URL。cfm’位于网站的根目录中,处理所有URL构建和内容交付。 在301重定向期间,Post数据丢失。 到目前为止找不到解决方案,我们尝试将post方法排除在重写之外-最坏的情况是,我们可以将旧类型的URL用于post方法。 有什么可以做的吗? 谢啦

  • 我开始使用ExoPlayer来传输一些音频。一切都很好,直到我遇到一个URL,其中有一个“301永久移动”重定向。默认情况下,ExoPlayer2不会处理该问题。 我已经看过这个帖子了:https://github.com/google/ExoPlayer/issues/423 在那里,他们说要向HttpDataSource或UriDataSource添加新的“lowCrossDomainReDi

  • 我已经在我的 Web 应用程序中配置了 SSL。我已经按照所需的步骤在我的 Tomcat 中安装了证书。 我一直关注的导师是https://www.mulesoft.com/tcat/tomcat-security 我已经强制使用 https over http,这意味着任何对 http 的请求都将转发到 https。我在服务器中进行了以下更改.xml 查看更多:https://www.mules

  • 我想知道301和307重定向之间的区别。 我希望通过自制url重定向器生成反向链接,我希望任何“链接果汁”或“页面排名果汁”都能直接从原始主页流向最终url,但如果其中一个原始主页出现问题,我希望能够通过删除该特定页面的重定向链接来关闭该链接。有道理? 我的理解是,301是永久性的,这意味着谷歌将看到301并更新其缓存的URL作为最终目的地,而不管我以后是否取消重定向。 如果我使用307,它将不会

  • 本文向大家介绍详解Nginx几种常见实现301重定向方法上的区别,包括了详解Nginx几种常见实现301重定向方法上的区别的使用技巧和注意事项,需要的朋友参考一下 Nginx下常见的301跳转有以下三种,虽然都能达到同样的目的。但是三种写法上还是有区别的,主要的区别是在正则匹配的性能上。 第一种:使用rewrite指令,通过正则匹配所有的URI后再去掉开头第一个/(反斜线)。 第二种:同样使用re

  • 本文向大家介绍nginx url自动加斜杠及301重定向的问题,包括了nginx url自动加斜杠及301重定向的问题的使用技巧和注意事项,需要的朋友参考一下 nginx url自动加斜杠问题及301重定向,URL指向一个目录并且在最后没有包含斜杠,会301重定向跳转,添加server_name或修改访问重定向。 nginx url自动加斜杠问题及301重定向 内部服务器使用nginx,做网站测试