ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

day15.2

2022-06-21 19:32:21  阅读:121  来源: 互联网

标签:index day15.2 rewrite nginx html web01 root


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

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有