Nginx做重定向 -- 详解Nginx几种常见实现301重定向方法上的区别

原创 淹不死的狗  2020-07-11 12:22:38  阅读 381 次 评论 0 条
摘要:

最近换了域名,之前域名想301到新域名上,都知道Apache的. htaccess完美解决301重定向.htaccess文件实现301重定向常用的七种方法Nginx下常见的301跳转有以下三种,虽然都能达到同样的目的。但是三种写法上还是有区别的,主要的区别是在正则匹配的性能上。第一种:使用rewrite指令,通过正则匹配所有的URI后再去掉开头第一个/(反斜线)。1rewrite ^/(.*)$ https://tugouli.exiu.org/$1;第二种:同样使用rewrite指令,不同的是

最近换了域名,之前域名想301到新域名上,都知道Apache的. htaccess完美解决301重定向.htaccess文件实现301重定向常用的七种方法


Nginx下常见的301跳转有以下三种,虽然都能达到同样的目的。但是三种写法上还是有区别的,主要的区别是在正则匹配的性能上。

第一种:使用rewrite指令,通过正则匹配所有的URI后再去掉开头第一个/(反斜线)。

1
rewrite ^/(.*)$ https://tugouli.exiu.org/$1;

第二种:同样使用rewrite指令,不同的是通过$request_uri变量匹配所有的URI。

1
rewrite ^ https://tugouli.exiu.org$request_uri? permanent;

这样写的好处是省去了去掉开头第一个反斜线的过程,正则匹配上性能更优。

第三种:使用return指令,通过301状态码和$request_uri参数,直接告诉Nginx这是个301重定向和抓取指定URI。

1
return 301 https://tugouli.exiu.org$request_uri;  

这种方法是性能上最优的,因为rewrite指令有很多写法和规则,执行完所有正则匹配后,Nginx 才会知道这是一个301永久重定向。

通过以上三种写法介绍,我们可以看出return指令在301跳转上比rewrite指令性能上更加有优势。虽然在访问量不大的情况下几种写法的性能表现上区别并不大,不过在海量访问中一个小小的优化也能在提升业务系统性能上起到不小的作用哟。



利用Apache的. htaccess完美解决301重定向.htaccess文件实现301重定向常用的七种方法

1.重定向Domain.Com到Www.Domain.Com

这种重定向非常常见,最终目的是实现域名的唯一性,也是seo必须要做的。实现方法是在.htaccess文件中加入以下规则:

代码如下:

RewriteEngine On
RewriteCond %{HTTP_HOST} !^www.domain.com$ [NC]
RewriteRule ^(.*)$ http://www.domain.com/$1 [L,R=301]

注:使用这种301重定向方式后,当你打开类似domain.com的网址后会自动定向到www.domain.com。

2.重定向Www.Domain.Com到Domain.Com

这种操作刚好和上面的域名显示是相反的,规则如下:

代码如下:

RewriteEngine On
RewriteCond %{HTTP_HOST} !^domain.com$ [NC]
RewriteRule ^(.*)$ http://domain.com/$1 [L,R=301]

注:使用此301重定向方式,当你打开类似www.domain.com的网址后会自动定向到domain.com。

3.重定向Olddomain.Com 到 Newdomain.Com

这种操作经常用于更换域名时用到,很多站长因为种种原因可能要为站点更换域名,此时多采用以下规则来实现重新定向:

代码如下:

RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} !olddomain.com$ [NC]
RewriteRule ^(.*)$ http://newdomain.com/$1 [L,R=301]

注:当用户打开老的域名后,会自动重定向到新的域名下的站点,此时域名显示格式为不带www.的格式。

4.重定向Olddomain.Com 到 Www.Newdomain.Com

这种操作是基于第三种方式的改良,只是显示网址显示为带www.的那种。

代码如下:

RewriteEngine On
RewriteCond %{HTTP_HOST} !olddomain.com$ [NC]
RewriteRule ^(.*)$ http://www.newdomain.com/$1 [L,R=301]

注:当用户打开老的域名后,会自动重定向到新的域名下的站点,并且网址显示格式为带www.的格式。

5.重定向Domain.Com/File/File.Php 到 Otherdomain.Com/Otherfile/Other.Php

这种操作针对于更改一个域名的同时,网站目录路径也发生变化的情况下使用,规则如下:

代码如下:

RewriteCond %{HTTP_HOST} ^www.domain.com$
RewriteRule ^file/file.php$ http://www.otherdomain.com/otherfile/other.php [R=301,L]

注:当用户访问老的域名路径时,会重新定向到新的域名新的路径下。

6.IIS服务器下实现301重定向

具体方法如下:打开internet信息服务管理器,在欲重定向的网页或目录上按右键,选中“重定向到URL”, 在对话框中输入目标页面的地址,切记要选中“资源的永久重定向”最后点击“应用”即可。

注:再次提醒你,一定要选中“资源的永久重定向”。

7.Apache服务器实现301重定向

在Apache服务器实现301重定向的方法园子在以前的文章中提到过,只需要在.htaccess文件中加入以下规则:

代码如下:

修改.htaccess文件

<ifmodule mod_rewrite.c>
    RewriteEngine On
    RewriteCond %{HTTP_HOST} bbs.fxword.cn$ [NC]
    RewriteRule ^(.*)$ http://www.fxword.cn/$1 [R=301,L]
</ifmodule>


本文地址:https://tugouli.exiu.org/3551.html
版权声明:本文为原创文章,版权归 淹不死的狗 所有,欢迎分享本文,转载请保留出处!

发表评论


表情

还没有留言,还不快点抢沙发?