nginx 301 302重定向跳转配置

   首先看一个完整代码示例,关于nginx 301 302跳转的。

  301跳转设置:

  server {

  listen 80;

  server_name downcc.com;

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

  access_log off;

  }

  302跳转设置:

  server {

  listen 80;

  server_name downcc.com;

  rewrite ^/(.*) http://www.downcc.com/$1 redirect;

  access_log off;

  }

  在看下关于nginx 301 302跳转的详细说明文档

  server {

  server_name downcc.com;

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

  }

  last – 基本上都用这个Flag。

  break – 中止Rewirte,不在继续匹配

  redirect – 返回临时重定向的HTTP状态302

  permanent – 返回永久重定向的HTTP状态301

  Nginx的重定向用到了Nginx的HttpRewriteModule,下面简单解释以下如何使用的方法:

  rewrite命令

  nginx的rewrite相当于apache的rewriterule(大多数情况下可以把原有apache的rewrite规则加上引号就可以直接使用),它可以用在server,location 和IF条件判断块中,命令格式如下:

  rewrite 正则表达式 替换目标 flag标记

  flag标记可以用以下几种格式:

  last – 基本上都用这个Flag。

  break – 中止Rewirte,不在继续匹配

  redirect – 返回临时重定向的HTTP状态302

  permanent – 返回永久重定向的HTTP状态301

  特别注意:

  last和break用来实现URL重写,浏览器地址栏的URL地址不变,但是在服务器端访问的路径发生了变化;

  redirect和permanent用来实现URL跳转,浏览器地址栏会显示跳转后的URL地址;

  例如下面这段设定nginx将某个目录下面的文件重定向到另一个目录,$2对应第二个括号(.*)中对应的字符串:

  location /download/ {

  rewrite ^(/download/.*)/m/(.*)..*$ $1/nginx-rewrite/$2.gz break;

  }

  nginx重定向的IF条件判断

  在server和location两种情况下可以使用nginx的IF条件判断,条件可以为以下几种:

  正则表达式

  如:

  匹配判断

  ~ 为区分大小写匹配; !~为区分大小写不匹配

  ~* 为不区分大小写匹配;!~为不区分大小写不匹配

  例如下面设定nginx在用户使用ie的使用重定向到/nginx-ie目录下:

  if ($http_user_agent ~ MSIE) {

  rewrite ^(.*)$ /nginx-ie/$1 break;

  }

  文件和目录判断

  -f和!-f判断是否存在文件

  -d和!-d判断是否存在目录

  -e和!-e判断是否存在文件或目录

  -x和!-x判断文件是否可执行

  例如下面设定nginx在文件和目录不存在的时候重定向:

  if (!-e $request_filename) {

  proxy_pass http://127.0.0.1;

  }

  return

  返回http代码,例如设置nginx防盗链:

  location ~* .(gif|jpg|png|swf|flv)$ {

  valid_referers none blocked www.downcc.com www.test1.com;

  if ($invalid_referer) {

  return 404;

  }

  }

时间: 2024-09-14 14:35:35

nginx 301 302重定向跳转配置的相关文章

linux+nginx 301域名重定向跳转

先来看看关于 nginx 命令 last – 基本上都用这个Flag. break – 中止Rewirte,不在继续匹配 redirect – 返回临时重定向的HTTP状态302 permanent – 返回永久重定向的HTTP状态301 这个问题都会在服务器的程序码出错时出现. 第一种情况:访问A站定向到B站  代码如下 复制代码 server { server_name www.xx.com xx.com ; if ($host != 'www.xx.com' ) { rewrite ^/(

Nginx 301永久重定向配置的应用例子

Nginx不支持配置.htaccess文件来实现301永久重定向和伪静态,需要在Nginx站点配置文件(一般在"/usr/local/nginx/conf/vhost" 文件夹内)里面使用rewrite指令来实现.本站固定链接结构改变后使用的Nginx 301永久重定向配置如下: rewrite ^/(2009|2010|2011|2012|2013|2014|2015|2016)/(.*).html$ $scheme://$host/archives/$2.html permanen

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 ($hos

nginx 301跳转到带www域名方法rewrite(转)

首先一.得在你的域名管理里面定义 test.com和www.test.com指向你的主机ip地址,我们可以使用nslookup命令测试:直接输入 nslookup test.com和nslookup www.test.com 都有指向ip的A记录即可. 第二.我们才能在nginx里面配置rewrite规则.打开 nginx.conf文件找到你的server配置段: 1 2 3 4 5 6 7 8 server { listen 80; server_name www.test.com test.

php的curl获取有301/302跳转文件出错问题解决

在使用php的curl获取远程文件,代码如下: <? $ghurl = isset($_GET["id"]) ? $_GET["id"]:"http://www.baidu.com/"; // php 获取 function getContents($url){ $header = array("Referer: http://www.baidu.com/"); $ch = curl_init(); curl_setop

301与302重定向的区别有哪些

 一,301永久重定向 被请求的资源已永久移动到新位置,并且将来任何对此资源的引用都应该使用本响应返回的若干个 URI 之一. 如果可能,拥有链接编辑功能的客户端应当自动把请求的地址修改为从服务器反馈回来的地址.除非额外指定,否则这个响应也是可缓存的. 新的永久性的 URI 应当在响应的 Location 域中返回.除非这是一个 HEAD 请求,否则响应的实体中应当包含指向新的 URI 的超链接及简短说明. 如果这不是一个 GET 或者 HEAD 请求,因此浏览器禁止自动进行重定向,除非得到用户

php 实现301重定向跳转实例代码_php实例

在php中301重定向实现方法很简单我们只要简单的利用header发送301状态代码,然后再用header进行跳转,效果与apache,iis,nginx都是一样的效果哦. 一:更推荐这种方法,因为它可以把http://www.jb51.net原来所有的url都转到http://jb51.net新的地址上  代码如下 <?php $the_host = $_SERVER['HTTP_HOST']; $request_uri = isset($_SERVER['REQUEST_URI']) ? $

网站改版页面如何做301重定向跳转

我的网站之前是用wordpress系统搭建的,后来因为垃圾评论,安全性以及功能局限等原因,我改用蝉知 系统重新做了一个,主题界面还是仿的之前的WP主题.但新站上线后,问题就来了,因为这两款建站系统的的URL设计不同,导致旧站除首页外所有的页面都无法访问了,用新地址重新编辑发布,又不利于SEO优化.所以最后就想到了301跳转. 什么是301重定向 301重定向(或叫301跳转)是用户或搜索引擎蜘蛛向网站服务器发出访问请求时,服务返回的HTTP数据流中头信息(header)部分状态码的一种,表示本网

php 实现301重定向跳转实例代码

在php中301重定向实现方法很简单我们只要简单的利用header发送301状态代码,然后再用header进行跳转,效果与apache,iis,nginx都是一样的效果哦. 一:更推荐这种方法,因为它可以把http://www.jb51.net原来所有的url都转到http://jb51.net新的地址上 代码如下 <?php $the_host = $_SERVER['HTTP_HOST']; $request_uri = isset($_SERVER['REQUEST_URI']) ? $_