其他分享
首页 > 其他分享> > day15.2

day15.2

作者:互联网

nginx实现rewrite重写

# 什么是rewrite
Rewrite主要实现url地址重写,以及重定向,就是把传入web的请求重定向到其他url的过程。
做伪静态,将动态页面url转换成静态的页面url

rewrite使用场景

1.地址跳转
www.taobao.com跳转成 main.m.taobao.com

2.协议跳转
http://blog.driverzeng.com 跳转成:https://blog.driverzeng.com

3.伪静态
	将动态页面显示为静态页面方式的一种技术,便于搜索引擎的录入,同时建上动态URL地址对外暴露过多的参数,提升更高的安全性。
	搜索引擎,SEO优化依赖于url路径,好记的url便于智齿搜索引擎录入

伪静态的配置

# 语法
句法:Syntax: rewrite regex replacement [flag]
默认:Default: --
语境:Context: server,location,if

rewrite:模块
regex:正则表达式
replacement:要替换的URL

rewrite的flag

概述 flag
匹配到last的规则后可以继续匹配后面的location last
匹配到break的规则后,无法再匹配后面的location break
302临时重定向 redirect
301永久重定向 permanent
# redirect临时重定向配置
[root@web01 ~]# vim /etc/nginx/conf.d/rewrite.conf

server {
        listen 80;
        server_name rewrite.zls.com;
        root /code;
        index index.html;

        location /test {
                rewrite ^(.*)$  https://www.baidu.com redirect;
        }
}

# 重新加载nginx
[root@web01 ~]# systemctl reload nginx

# 域名解析
10.0.0.7 rewrite.zls.com

# permanent临时重定向配置
[root@web01 ~]# vim /etc/nginx/conf.d/rewrite.conf

server {
        listen 80;
        server_name rewrite.zls.com;
        root /code;
        index index.html;

        location /test {
                rewrite ^(.*)$  https://www.baidu.com permanent;
        }
}

# 重新加载nginx
[root@web01 ~]# systemctl reload nginx

# 域名解析
10.0.0.7 rewrite.zls.com

# last与break区别对比
[root@web01 ~]# !vim
vim /etc/nginx/conf.d/rewrite.conf

server {
        listen 80;
        server_name rewrite.zls.com;
        root /code;
        index index.html;

        location ~^/break {
                rewrite ^/break /test/ break;
        }

        location ~^/last {
                rewrite ^/last /test/ last;
        }
        location /test {
                rewrite ^(.*)$  https://www.baidu.com permanent;
        }
}

# last和break的区别
break只要匹配到规则,则会取本地配置路径的目录寻找的请求的文件;
而last只要匹配到规则,会对其所在的server层的location继续访问


rewrite实践

开启rewrite日志

# 开启rewrite日志,错误日志的级别要改成 notice,在http加上rewrite_log on;
[root@web01 ~]# vim /etc/nginx/nginx.conf 
        rewrite_log on;

# 重启nginx
[root@web01 ~]# systemctl reload nginx

案例一

# 用户访问/abc/1.HTML实际上真实访问的是/ccc/bbb/2.html
[root@web01 bbb]# vim /etc/nginx/conf.d/al.conf

server {
        listen 80;
        server_name rew.wc.com;
        root /code;
        index index.html;

        location /abc/1.html {
                rewrite ^(.*)$ /ccc/bbb/2.html redirect;
        }
}

# 创建以下站点目录
[root@web01 bbb]# mkdir /code/ccc/bbb -p
[root@web01 bbb]# vim /2.html

#  重启nginx
[root@web01 nginx]# systemctl restart nginx

案例二

# 用户访问/2018/ccc/2.html 实际上真实访问的是 /2014/ccc/bbb2.html
[root@web01 bbb]# vim /etc/nginx/conf.d/al.conf

server {
        listen 80;
        server_name rew.wc.com;
        root /code;
        index index.html;

        location /2018 {
                rewrite ^/2018/(.*) /2014/$1 redirect;
        }
}

# 创建以下站点目录
[root@web01 bbb]# mkdir /code/2014/ccc/bbb -p
[root@web01 bbb]# vim /2.html

#  重启nginx
[root@web01 nginx]# systemctl restart nginx

案例三

# 用户访问course-11-22-33.html实际上真实访问的是/course/11/22/33/course_33.html
[root@web01 33]# vim /etc/nginx/conf.d/al.conf 

server {
        listen 80;
        server_name rew.wc.com;
        root /code;
        index index.html;

        location /course {
                rewrite course-(.*)-(.*)-(.*).html /course/$1/$2/$3/course_$3.html redirect;
        }
}

# 创建站点目录
[root@web01 code]# mkdir /code/course/11/22/33 -p
[root@web01 code]# cd /code/course/11/22/33/
[root@web01 33]# vim course_33.html

# 重启nginx
[root@web01 nginx]# systemctl restart nginx

案例四

# 80端口强制跳转443端口
[root@web01 33]# vim /etc/nginx/conf.d/al.conf 

server {
        listen 80;
        server_name rew.wc.com;
        rewrite ^(.*) https://$server_name redirect;
}

wordpress使用rewrite做伪静态

# 在装好的wordpress上将配置文件修改
[root@web01 conf.d]# vim blog.wc.com.conf 

server{
        listen 80;
        server_name blog.wc.com;
        root /wc/wordpress;
        index index.php index.html;
        location ~ \.php$ {
        fastcgi_pass 127.0.0.1:9000;
#fastcgi_pass unix:/opt/php.sock;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
}
        location / {
                if ( -f $request_filename/index.html ){
                rewrite (.*) $1/index.html break;
        }
                if ( -f $request_filename/index.php ){
                rewrite (.*) $1/index.php;
        }
                if ( !-f $request_filename ){
                rewrite (.*) /index.php;
        }

        }
}

# 重启nginx
[root@web01 nginx]# systemctl restart nginx

Discuz做伪静态

# 1.安装Discuz
[root@web03 code]# wget http://test.driverzeng.com/Nginx_Code/Discuz_X3.3_SC_GBK.zip

(详细操作见WordPress,照葫芦画瓢)


全绿即可






标签:index,day15.2,rewrite,nginx,html,web01,root
来源: https://www.cnblogs.com/wangchengww/p/16398013.html