本篇文章给大家谈谈nginx域名重定向,以及Nginx 配置旧域名重定向到新域名对应的知识点,文章可能有点长,但是希望大家可以阅读完,增长自己的知识,最重要的是希望对各位有所帮助,可以解决了您的问题,不要忘了收藏本站喔。
nginx为什么返回301重定向在网站建设中需要网页重定向的情况很多:如网页目录结构变动,网页重命名、网页的扩展名改变、网站域名改变等。
linux中nginx 301重定向跳转方法总结,有需要的朋友可参考一下。
第一种情况:访问aaaaaaa站定向到bbbbbbbbbbb站
复制代码
代码如下:
server{
server_naaaaaaame
www.aaaaaaa.com;
rewrite ^(.*) http://www.bbbbbbbbbbb.com$1
permaaaaaaanent;
}
第二种情况:不是访问aaaaaaa站的全部重定向到指定页面
复制代码
代码如下:
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 转载需授权!