Linux Nginx服务器 rewrite

爷,独闯天下 提交于 2020-03-04 18:39:32

1.Rewite规则

Rewrite规则可以实现对urI的重写。以及重定向

2.重定向

什么是重定向?

就是地址A跳转到地址B。
百度百科的解释:重定向(Redirect)就是通过各种方法将各种网络请求重新定个方向转到其它位置(如:网页重定向、域名的重定向、路由选择的变化也是对数据报文经由路径的一种重定向)

为什么要进行重定向?什么时候需要重定向?

  • 网站调整(如改变网页目录结构)
  • 网页被移到一个新地址
  • 网页扩展名改变(如应用需要把.php改成.html)

这种情况下,如果不做重定向,则用户收藏夹或搜索引擎数据库中旧地址只能让访问客户得到一个404页面错误信息,访问流白白丧失;再者某些注册了多个域名的网站,也需要通过重定向让访问这些域名的用户自动跳转到主站点等

3. 301和302

curl -I www.taobao.com
curl -I taobao.com
  • 1
  • 2

在这里插入图片描述
301 redirect: 301代表永久性转移(PermanentlyMoved)
302 redirect: 302代表暂时性转移(TemporarilyMoved )

共同点:
301和302状态码都表示重定向,就是说浏览器在到服务器返回的这个状态码后会自动跳转到一个新的URL地址,这个地址可以从响应的Location首部中获取(用户看到的效果就是他输入的地址A瞬间变成了另一个地址B)

不同点:
301表示旧地址A的资源已经被永久地移除了(这个资源不可访问了) ,搜索引擎在抓取新内容的同时也将旧的网址交换为重定向之后的网址;302表示旧地址A的资源还在(仍然可以访问),这个重定向只是临时地从旧地址A跳转到地址B,搜索引擎会抓取新的内容而保存旧的网址

什么时候进行301或者302跳转?

  • 当一个网站或者网页24/48小时内临时移动到一个新的位置,这时候就要进行302跳转。
    打个比方说:我有一套房子,但是最近走亲戚去亲戚家住了,过两天我还回来的。
  • 而使用301跳转的场景就是之前的网站因为某种原因需要移除掉,然后要到新的地址访问,是永久性的。
    就比如你的那套房子其实是租的,现在租期到了,你又在另一个地方找到了房子,之前租的房子不住了

使用301跳转的场景:

  • 域名到期不想续费(或者发现了更适合网站的域名),想换个域名。
  • 在搜索引擎的搜索结果中出现了不带www的域名,而带www的域名却没有收录,这个时候可以用301重定向来告诉搜索引擎我们目标的域名是哪个
  • 空间服务器不稳定,换空间的时候

尽量使用301跳转

举个例子:
从网站A (网站比较烂)上做了一个302跳转到网站B (搜索排名很靠前) ,这时候有时搜索引擎会使用网站B的内容,但却收录了网站A的地址。这样在不知不觉间,网站B在为网站A作贡献,网站A的排名就靠前了
而302重定向很容易被搜索引擎误认为是利用多个域名指向同一网站,那么你的网站就会被封掉,罪名是“利用重复的内容来干扰Google搜索结果的网站排名”

4.www.westos.org---https://www.westos.org

修改配置文件:

vim /usr/local/nginx/conf/nginx.conf
121 server {
122         listen 80;
123         server_name www.westos.org;
124         rewrite ^/(.*)$ https://www.westos.org/$1;     ##$1表示用户在这里输入的内容保留,只会重定向$1前面的内容
125         #rewrite ^/(.*)$ https://www.westos.org/$1;    ##永久重定向(可以缓存,临时的不允许缓存)
nginx -t	#语法检测
nginx -s reload	#在不暂停服务的情况下重新加载
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

在这里插入图片描述
测试:

搜索www.westos.org	页面跳转到https://www.westos.org
搜索www.westos.org/test.html 跳转到https://www.westos.org/test.html
  • 1
  • 2

注意:
1.404:虽然它下面没有test.html这个文件,但是它仍然会重定向到https://www.westos.org/test.html(即$1表示用户在这里输入的内容保留,只会重定向$1前面的内容)

2.^/(.*)$为匹配所有,即匹配www.westos.org;

在这里插入图片描述

5.访问www.westos.org并且以bbs结尾的---https://bbs.westos.org:

修改配置文件:

vim /usr/local/nginx/conf/nginx.conf
116         location / {
117             root   /bbs;
118            index  index.html index.htm;
119         }  
120     }   
121 server {
122         listen 80;
123         server_name www.westos.org;
124         #rewrite ^/(.*)$ https://www.westos.org/$1;     ##$1表示用户在这里输入的内容保留,只会重定向$1前
    面的内容
125         #rewrite ^/(.*)$ https://www.westos.org/$1;     ##永久重定向(可以缓存,临时的不允许缓存)
126         rewrite ^/bbs$ https://bbs.westos.org/index.html permanent;     #表示访问www.westos.org并且以bbs    结尾的,都定向到https://bbs.westos.org
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

在这里插入图片描述

mkdir /bbs
vim /bbs/index.html
cat /bbs/index.html
  • 1
  • 2
  • 3
nginx -t	#语法检测
nginx -s reload	#在不暂停服务的情况下重新加载
  • 1
  • 2

在这里插入图片描述

在真机中添加解析:

vim /etc/hosts
  • 1

在这里插入图片描述
测试:

bbs.westos.org #查看到的是server1,这是因为我们在配置文件中写好的默认发布页面内容为server1
https://bbs.westos.org/ #添加证书后,查看到/bbs里的默认发布内容
www.westos.org/bbs #页面会自动跳转到https://bbs.westos.org/
  • 1
  • 2
  • 3

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!