Nginx rewrite

在浏览器输入www.jingdong.com可以帮你跳转到https://www.jd.com/,而且在输入一些路径的时候比如https://www.jd.com/cwwecvwev这种,正常情况会报404资源找不到,但是它帮你重定向到了首页。

在手机端打开京东是手机端的页面https://m.jd.com/,在pc端打开的是https://www.jd.com/页面,在不同的终端打开的页面的地址是不一样的。

 

Nginx的rewrite功能需要pcre软件的支持,即通过perl兼容正则表达式语句进行规则匹配的。默认参数编译nginx就会支持rewrite的模块,但是也必须要pcre的支持。

rewrite是实现URL重写的关键指令,根据regex(正则表达式)部分内容,重定向到replacement,结尾是flag标记。

 

rewrite语法

rewrite  <regex>      <replacement>             [flag]

正则                            替代内容                    flag标记

 

正则:perl兼容正则表达式语句进行规则匹配

1

2

3

4

5

6

7

8

9

10

11

.      :匹配除换行符以外的任意字符

?     :重复0次或1次

+     :重复1次或更多次

*      :重复0次或更多次

\d     :匹配数字

^      :匹配字符串的开始字符

$      :匹配字符串的结束字符

{n}    :重复n次

{n,}   :重复n次或更多次

[c]     :匹配单个字符c

[a-z]  :匹配a-z小写字母的任意一个

在rewrite中,如果使用小括号(),那么在小括号之间匹配的内容,可以在后面通过$1来引用,$2表示的是前面第二个()里的内容。

 

替代内容:将正则匹配的内容替换成replacement

 

flag标记:rewrite支持的flag标记

flag标记说明:

last #本条规则匹配完成终止当前location的规则,继续向下匹配新的location URI规则

break #本条规则匹配完成即终止,不再匹配后面的任何规则

redirect #返回302临时重定向,浏览器地址会显示跳转后的URL地址

permanent #返回301永久重定向,浏览器地址栏会显示跳转后的URL地址

 

 

rewrite实现域名跳转

当访问test.com时候,跳转到www.test.com,域名之间的跳跃,即从一个server虚拟主机跳到另外一个server虚拟主机

server {
listen 80;
server_name test.com;
rewrite ^/(.*)$ http://www.test.com/$1;
}

server{
listen 80;
charset utf-8;
server_name www.test.com;
location /{
root  /data/www;
index index.html;
  }
}

[root@www ~]# echo "rewrite sucess this is www.test.com" > /data/www/index.html

修改C:\windows\system32\drivers\etc/hosts文件添加如下,在本地做解析

192.168.179.99  www.test.com    test.com

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章