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