下载后可任意编辑Nginx 中 rewrite 实现二级域名、三级域名、泛域名、路径的重写 最常见的: 静态地址重定向到带参数的动态地址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 ...