Nginx rewrite(重写)【暂未完成(半成品)】
1、什么是 Nginx rewrite
和 Apache 等 Web 服务软件一样, Nginx rewrite 的主要功能也是实现 URL 地址重写。 Nginx 的 rewrite 规则需要 PCRE 软件的支持, 即通过 Perl 兼容正则表达式语法进行规则匹配。 前文在安装 Nginx 软件时就已经安装了这个 PCRE 软件, 同时也让 Nginx 支持了 rewrite 的功能, 默认参数编译时, Nginx 就会安装支持 rewrite 的模块,同时也必须要有 PCRE 软件的支持。
2、Nginx rewrite 语法
1)rewrite 指令语法
指令语法: rewrite regex replacement [flag];
默认值:none
应用位置: server、location、if
rewrite 是实现 URL 重写的关键指令,根据 regex (正则表达式)部分的内容,重定向到 replacement 部分,结尾是 flag 标记。 下面是一个简单的 URL rewrite 跳转的例子:
rewrite ^/(.* ) http://www.test.org/$1 permanent;
在上述指令中,rewrite 为固定关键字,表示开启一条 rewrite 匹配规则,部分是 ^/(.*),这是一个正则表达式,表示匹配所有,匹配成功后跳转到 http://www.test.org/$1。这里的 $1 是取前面 regex 部分括号里的内容,结尾的 permanent; 是永久 301 重定向标记,即跳转到后面的http://www.test.org/$1地址上。
2)rewrite 指令结尾的 flag 标记说明
flag 标记符号 | 说明 |
---|
last | 本条规则匹配完成后, 继续向下匹配新的 location URI 规则 | break | 本条规则匹配完成即终止, 不再匹配后面的任何规则 | redirect | 返回 302 临时重定向, 浏览器地址栏会显示跳转后的 URL 地址 | permanent | 返回 301 永久重定向, 浏览器地址栏会显示跳转后的 URL 地址 |
3)Nginx rewrite 的企业应用场景
- 可以调整用户浏览的URL,看起来更规范,合乎开发及产品人员的需求。
- 为了让搜索引擎搜录网站内容及用户体验更好,企业会将动态URL地址伪装成静态地址提供服务。
- 网址换新域名后,让旧的访问跳转到新的域名上。例如,访问京东的360buy.com会跳转到jd.com
- 根据特殊变量、目录、客户端的信息进行URL调整等
实例1:如果访问不存在的任意网页都重定向到错误页面
location / {
root html;
index index.html index.htm;
if (!-f $request_filename) {
rewrite /.* /err.html permanent; (permanent表示永久的重定向到这个页面)
}
实例2:为某个目录定义别名,用户访问的路径其实并不存在,而是将其转发到另外一个页面
location / {
root html;
index index.html ;
rewrite ^/forum/(.*) /bbs/$1 last ;
......
}
实例3:实现域名跳转
server {
listen 80;
server_name www.360buy.com;
如果访问www.360buy.comm则跳转到www.jd.com
rewrite ^/.* http://www.jd.com/$1 last;
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
root html;
index index.html ;
}
|