nginx域名重定向 Nginx 配置旧域名重定向到新域名

8678008682024-03-16 22:12:0480域名知识

本篇文章给大家谈谈nginx域名重定向,以及Nginx 配置旧域名重定向到新域名对应的知识点,文章可能有点长,但是希望大家可以阅读完,增长自己的知识,最重要的是希望对各位有所帮助,可以解决了您的问题,不要忘了收藏本站喔。

nginx域名重定向 Nginx 配置旧域名重定向到新域名nginx为什么返回301重定向

在网站建设中需要网页重定向的情况很多:如网页目录结构变动,网页重命名、网页的扩展名改变、网站域名改变等。

linux中nginx 301重定向跳转方法总结,有需要的朋友可参考一下。

第一种情况:访问aaaaaaa站定向到bbbbbbbbbbb站

复制代码

代码如下:

server{

nginx域名重定向 Nginx 配置旧域名重定向到新域名

server_naaaaaaame

www.aaaaaaa.com;

rewrite ^(.*) http://www.bbbbbbbbbbb.com$1

permaaaaaaanent;

}

第二种情况:不是访问aaaaaaa站的全部重定向到指定页面

nginx域名重定向 Nginx 配置旧域名重定向到新域名

复制代码

代码如下:

server{

server_naaaaaaame

www.aaaaaaa.com;

if($host!=‘aaaaaaa.com)

{ rewrite ^/(.*)$

http://www.bbbbbbbbbbb.com/$1 permaaaaaaanent;}}

如果写在第一个server段

使用IP访问时也将被重定向

第三种带WWW或者不带WWW之间的跳转

复制代码

代码如下:

server

{

server_naaaaaaame c.net

rewrite ^/(.*)$ http://www.c.net/$1 permaaaaaaanent;

}

如何做nginx的重定向

方法/步骤:

由于网站的url由动态改为了伪静态,原先的动态网址依然能够访问,导致原先的url的权重无法转移,所以对原来的url做301重定向,并在百度站长中提交网站改版请求。

网上的教程都是直接根据文件重定向的,对于单一入口的程序不适用,所以写下次教程。

示例:

if($args~* mod=item&act=view&id=(\d+)){

rewrite ^/(.*)$ http://$host/item/$arg_id.html? permanent;

}

$args是当前url问号后面的部分,相当于$query_string

$arg_id是id的值,格式为$arg_

rewrite是url重写命令

permanent代表的是返回301永久重定向状态码

$host为当前网站的域名部分

结尾的问号代表不会将url后面的参数一起带过去

^和$是代表的是正则匹配

if条件中的(\d+)代表的是数字参数,如777

注意:nginx中if命令不能嵌套,不能有多条件

if条件中的等号只有一个

注意if的空格问题

if条件中可以有多条url重写语句

重定向是基于文件的,示例中是适用于index.php?mod=a&act=b的结构

如:rewrite文件A重定向到某地址

示例:

rewrite ^/good.php$ http://$host permanent;

rewriet ^/good1.php$ http://$host/ permanent;

如果需要对网站的域名进行重定向,可参考以下示例:

将不带www的域名重定向到带www的域名

server{

......

server_name www.fsech.com fsech.com

......

if($host= fsech.com){

rewrite ^(.*)$ http://www.fsech.com permanent;

}

}

Nginx配置rewrite重定向跳转

1.功能:使用nginx提供的全局变量或自己设置的变量,结合正则表达式和标志位实现url重写以及重定向。

2.位置:rewrite只能放在server{},location{},if{}中。

3.作用域:只能对域名后边的除去传递的参数外的字符串起作用,例如 http://baidu.com/a/we/index.php?id=1&u=str,只对/a/we/index.php重写

4.如果相对域名或参数字符串起作用,可以使用全局变量匹配,也可以使用proxy_pass反向代理。

5.执行顺序是:

<1>执行server块的rewrite指令

<2.>执行location匹配

<3.>执行选定的location中的rewrite指令

如果其中某步URI被重写,则重新循环执行1-3,直到找到真实存在的文件;循环超过10次,则返回500 Internal Server Error错误。

6.语法rewrite regex replacement [flag];

7.flag标志位

last:相当于Apache的[L]标记,表示完成rewrite

break:停止执行当前虚拟主机的后续rewrite指令集

redirect:返回302临时重定向,地址栏会显示跳转后的地址

permanent:返回301永久重定向,地址栏会显示跳转后的地址

因为301和302不能简单的只返回状态码,还必须有重定向的URL,这就是return指令无法返回301,302的原因了。这里 last和 break区别有点难以理解

8.last一般写在server和if中,而break一般使用在location中,

last不终止重写后的url匹配,即新的url会再从server走一遍匹配流程,而break终止重写后的匹配,

break和last都能组织继续执行后面的rewrite指令

9常用正则

.:匹配除换行符以外的任意字符

?:重复0次或1次

10例子:

Nginx 配置旧域名重定向到新域名

Nginx里的 rewrite模块是专门负责静态重写的。

该模块允许使用正则表达式改变 URI,并且根据变量来重定向以及选择配置。

基本用法是: rewrite patten replace flag。 patten是正则表达式,与 patten匹配的 URL会被改写为 replace,而 flag是可选的,可以有如下标志:

例如,要将旧域名重定向到新域名上:

如果是跳转到新域名上时要保留路径,那么:

还有一种方式,如果域名不是 www.new.domain.com就统一转到 https://www.new.domain.com:

$host是 core模块内部的一个变量,当请求头里不存在 host属性或者是个空值,$host则等于 server_name。如果请求头里有 host属性,那么$host等于 host属性除了端口号的部分,例如 host属性是 www.example.com,那么$host就是 www.example.com。

也可以单独增加一个 server,在里面统一设置, permanent是 301重定向:

rewrite与 location配合实现图片文件跳转到 CDN:

访问后台出现重定向次数过多该怎么办?-建站需知

好了,本文到此结束,如果可以帮助到大家,还望关注本站哦!

本文链接:https://aiming.cc/index.php/post/825.html 转载需授权!

分享到:
转载声明:本站发布文章及版权归原作者所有,转载本站文章请注明文章来源!
热门文章
随机文章
热门标签
侧栏广告位
做任务赚零花