最常见的: 静态地址重定向到带参数的动态地址

rewrite "^(.*)/service/(.*)\.html$" $1/service.php?sid=$2 permanent;

反过来: 带参数的动态地址重定向到静态地址

if ($query_string ~* id=(.*)) { 
set $id $1; 
rewrite "^(.*)/article.asp$" $1/article/$id.htm last; 
}

泛域名解析

view plaincopy to clipboardprint?
server_name www.w3cgroup.com *.w3cgroup.com; 
server_name_in_redirect off; 
#设置默认root 
set $rootdir /usr/local/nginx/html/w3cgroup/;

#匹配三级或三级以上的域名

if ($host ~* ^(.+)\.([^\.]+)\.([^\.]+)\.([^\.]+)$)  {

}
#匹配三级域名 
if ($host ~* ^([^\.]+)\.([^\.]+)\.([^\.]+)\.([^\.]+)$) { 
#三级域名中有访问指定的目录则重定向到相应的二级域名下 
rewrite "^.+upload/?(.*)$" http://upload.w3cgroup.com/$1 permanent; 
rewrite "^.+ijc/?(.*)$" http://ijc.w3cgroup.com/$1 permanent; 
break; 

#匹配二级域名 
if ($host ~* ^([^\.]+)\.([^\.]+)\.([^\.]+)$) { 
set $rs1 $1; 

#设置www时root 
if ($rs1 ~* ^www$) { 
set $rootdir /usr/local/nginx/html/platform_ig/; 
#二级域名中有访问指定的目录则重定向到相应的二级域名下,注意,这里要使用last 
rewrite "^.+upload/?(.*)$" upload/$1 last; 
rewrite "^.+ijc/?(.*)$" ijc/$1 last; 
break; 

#设置非www二级域名时root 
if ($rs1 !~* ^www$) { 
set $rootdir /usr/local/nginx/html/w3cgroup/$rs1; 
#二级域名中有访问指定的目录则重定向到相应的二级域名下 
rewrite "^.+upload/?(.*)$" http://upload.w3cgroup.com/$1 permanent; 
rewrite "^.+ijc/?(.*)$" http://ijc.w3cgroup.com/$1 permanent; 
break; 

#应用root 
root $rootdir; 
index index.php index.html; 
error_page 404 http://$host/;

注意:if () {} 之间需要空格,否则Nginx.conf会报unknow directive 错误!

参考:

Nginx Rewrite Flags 
* last 相当于Apache里的[L]标记,表示完成rewrite
* break 终止匹配, 不再匹配后面的规则
* redirect 返回302临时重定向
* permanent 返回301永久重定向

Nginx正则表达式匹配 
* ~ 为区分大小写匹配
* ~* 为不区分大小写匹配
* !~和!~*分别为区分大小写不匹配及不区分大小写不匹配

Nginx文件及目录匹配 
* -f和!-f用来判断是否存在文件
* -d和!-d用来判断是否存在目录
* -e和!-e用来判断是否存在文件或目录
* -x和!-x用来判断文件是否可执行

Nginx全局变量 
view plaincopy to clipboardprint?
$args 
$content_length 
$content_type 
$document_root 
$document_uri 
$host 
$http_user_agent 
$http_cookie 
$limit_rate 
$request_body_file 
$request_method 
$remote_addr 
$remote_port 
$remote_user 
$request_filename 
$request_uri 
$query_string 
$scheme 
$server_protocol 
$server_addr 
$server_name 
$server_port 
$uri

Nginx中rewrite实现二级域名、三级域名、泛域名、路径的重写的更多相关文章

  1. nginx中rewrite flag

    rewrite  正则表达式  新URI  [flag]; [flag] 选项用于调控重写的行为,它的取值可能是: last:重写完成后,会停止继续处理当前区块所有属于ngx_http_rewrite ...

  2. Let's Encrypt泛域名使用和Nginx配置拆分

    上一期写了 使用Let's Encrypt实现网站https化 ,随着二级域名的增多,每个二级域名需要一张 SSL 证书,这可太不优雅了,泛域名表示我可以更优雅. 作者:IT王小二 博客:https: ...

  3. 泛域名Wildcard Domain

    泛域名Wildcard Domain 泛域名Wildcard Domain是一种特殊的域名形式.它使用星号作为域名的一级.例如,*.baidu.com就是使用星号作为域名的二级部分.在域名解析中,一个 ...

  4. Let's Encrypt免费泛域名证书申请

    一. 下载acme.sh,以下四条命令任选一条即可 curl https://get.acme.sh | shwget -O - https://get.acme.sh | sh curl https ...

  5. 设置泛域名和设置IIS下面不同网站通过不同域名公用80端口的操作指引

    原文链接: http://www.lookdaima.com/WebForms/WebPages/Blanks/Pm/Docs/DocItemDetail.aspx?id=4be204ca-249b- ...

  6. 新开源HTML5单文件网页版ACME客户端,可在线申请Let's Encrypt、ZeroSSL免费HTTPS多域名通配符泛域名SSL/TLS证书(RSA/ECC/ECDSA)

    目录 开源项目的起源 项目地址 使用方法 第一步:选择Let's Encrypt.ZeroSSL或其他证书颁发机构 第二步:证书配置,填写域名 第三步:完成域名所有权的验证 第四步:下载保存证书PEM ...

  7. Nginx Rewrite 实现匹配泛域名规则

    Nginx 是一个高性能的 HTTP 和 反向代理 服务器,也是一个 IMAP/POP3/SMTP 代理服务器. Nginx 是由 Igor Sysoev 为俄罗斯访问量第二的 Rambler.ru ...

  8. 配置nginx服务器 —— Nginx添加多个二级子域名

    1.安装nginx centos/linux下的安装Nginx 2.安装好后进入Nginx目录中 在conf目录下建立一个vhost(ps:名字自己设定)文件夹 其中的$NGINXHOME为你的ngi ...

  9. php中cookie实现二级域名可访问操作的方法

    本文实例讲述了php中cookie实现二级域名可访问操作的方法.分享给大家供大家参考.具体方法如下: cookie在一些应用中很常用,假设我有一个多级域名要求可以同时访问主域名绑定的cookie,下面 ...

随机推荐

  1. (转)How To Kill runaway processes After Terminating Concurrent Request

    终止EBS并发请求后,解锁相关的进程. 还有种方法可以在PLSQL->tools->session 中找到并且kill Every concurrent Request uses some ...

  2. iOS socket 笔记

    ios 客服端: 下载 AsyncSocket 开发框架,拖到项目中 //建立 #import "ViewController.h" #import <sys/socket. ...

  3. qt qml scrollbar 移动APP风格的滚动轴

    依附于Flickable组件的滚动轴    自动放置在恰当位置    拖动时显示,不动时消失Lisence: MIT 请保留此声明Author: surfsky.cnblogs.com 2014-12 ...

  4. python27 + windows7 报错 No module named requests

    1.下载插件包 地址: http://www.lfd.uci.edu/~gohlke/pythonlibs/#distribute 包名: requests-2.12.4-py2.py3-none-a ...

  5. linux 中更改用户权限和用户组的命令chmod,chgrp实例

    linux 中更改用户权限和用户组的命令实例; 增加权限给当前用户 chmod +wx filename chmod -R 777 /upload 用户组 chgrp -R foldname zdz ...

  6. sql查看锁与解锁

    select request_session_id spid,OBJECT_NAME(resource_associated_entity_id) tableName from sys.dm_tran ...

  7. c++中函数中变量内存分配以及返回指针、引用类型的思考

    众所周知,我们在编程的时候经常会在函数中声明局部变量(包括普通类型的变量.指针.引用等等). 同时,为了满足程序功能的需要,函数的返回值也经常是指针类型或是引用类型,而这返回的指针或是引用也经常指向函 ...

  8. HTML空格标签

    双学位论文+本学位开题报告+实训项目+实训考试+学员考试,真是脑子都要爆炸... 话不多说,留个小知识点,HTML的空格替代符号表示法: 1. 半个空白,1个字符宽度:  或者   2.1个空白,2个 ...

  9. php地址赋值值和传值赋值

    下面这是php的赋值的两种方式: <?phpheader("Content-Type: text/html;charset=utf-8");$a="我是原始数据a& ...

  10. 使用FIR.im发布自己的移动端APP

    一次很偶然的机会知道FIR.im,这家公司主要的产品就是帮助开发者方便便捷地发布iOS或者Android应用的.今天我就聊聊如何在FIR.im中发布自己的APP,然后让加入UUID的设备通过网页直接下 ...