nginx的Rewrite规则案例分享

1、将cnbugs.com跳转到www.cnbugs.com

if ($host = 'cnbugs.com' ) {
        rewrite ^/(.*)$ http://www.cnbugs.com/$1  permanent;
}

2、访问www.cnbugs.com跳转到www.wangxuejin.cn/new/index.html

if ($host = 'www.cnbugs.com') {
          rewrite   ^/$  http://www.wangxuejin.cn/new/index.html  permanent;
}

3、访问/cnbugs/test01跳转到/wangxuejin.html。浏览器地址不变

rewrite   ^//cnbugs/test01/$     /wangxuejin.html    last;

4、多域名跳转到www.cnbugs.com

if ($host != ‘www.cnbugs.com’ ) {
rewrite ^/(.*)$  http://www.cnbugs.com/$1  permanent;
}

5、访问目录或文件不存在跳转到index.php

if ( !-e $request_filename )
{
rewrite  ^/(.*)$  /index.php  last;
}

6、目录对换/xxxx/123456  ====>  /xxxx?id=123456

rewrite    ^/(.+)/(\d+)      /$1?id=$2       last;

7、判断浏览器User Agent跳转

if( $http_user_agent  ~ MSIE)
{
rewrite ^(.*)$ /ie/$1 break;
}

8、禁止访问以.sh,.flv,.mp3文件后缀名的文件

location ~ .*\.(sh|flv|mp3)$
{
   	return 403;
}  

9、将移动用户跳转到移动端

if ( $http_user_agent ~* "(Android)|(iPhone)|(Mobile)|(WAP)|(UCWEB)" )
{
rewrite ^/$      http://m.cnbugs.com/       permanent;
}

10、匹配URL访问字符串跳转

if ($args ~* tid=13){
 return 404;
}

11、访问/10690/cnbugs/123跳转至/index.php?tid/10690/items=123,[0-9]表示任意一个数字,+表示多个,(.+)表示任何多个字符。

rewrite   ^/([0-9]+)/cnbugs/(.+)$     /index.php?tid/$1/items=$2     last;

发表评论

后才能评论