高性能服务器——Nginx之Rewrite规则

1、Rewite规则

  • Rewrite 规则可以实现对 urI 的重写,以及重定向。
  • 重定向:重定向(Redirect)就是通过各种方法将各种网络请求重新定个方向转到其它位置(如:网页重定向、域名的重定向、路由选择的变化也是对数据报文经由路径的一种重定向),简单来说,就是从地址A跳转到地址B。
  • 为什么要进行重定向以及什么时候需要重定向?
    a.网站调整(如改变网页目录结构);
    b.网页被移到一个新地址;
    c.网页扩展名改变(如应用需要把.php改成.html)
    这些情况下,如果不做重定向,则用户收藏夹或搜索引擎数据库中旧地址只能让访问客户得到一个404页面错误的信息,丢失访问流量;再者某些注册了多个域名的网站,也需要通过重定向让访问这些域名的用户自动跳转到主站点。

2、301和302

  • 301 redirect: 301代表永久性转移(PermanentlyMoved)
  • 302 redirect: 302代表暂时性转移(TemporarilyMoved )
  • 共同点:
    301和302状态码都表示重定向,就是说浏览器在得到服务器返回的这个状态码后,会自动跳转到一个新的URL地址。这个地址可以从响应的Location首部中获取(直观显示就是:输入的地址A瞬间变成了另一个地址B)
  • 不同点:
    301表示旧地址A的资源已经被永久地移除了(这个资源不可访问了) ,搜索引擎在抓取新内容的同时也将旧的网址交换为重定向之后的网址。
    302表示旧地址A的资源还在(仍然可以访问),这个重定向只是临时地从旧地址A跳转到地址B,搜索引擎会抓取新的内容而保存旧的网址。
  • 什么时候进行301或者302跳转?
    302跳转:当一个网站或者网页24/48小时内临时移动到一个新的位置,这时候就要进行302跳转。
    301跳转:之前的网站因为某种原因需要移除掉,然后要到新的地址访问,是永久性的。
    使用301跳转的场景:
    a.域名到期不想续费(或者发现了更适合网站的域名),想换个域名。
    b.在搜索引擎的搜索结果中出现了不带www的域名,而带www的域名却没有收录,这个时候可以用301重定向来告诉搜索引擎我们目标的域名是哪个。
    c.空间服务器不稳定,换空间的时候。
  • 尽量使用301跳转:
    举个例子: 从网站A (网站比较烂)上做了一个302跳转到网站B (搜索排名很靠前) ,有时搜索引擎会使用网站B的内容,但却收录网站A的地址。这样在不知不觉间,网站B在为网站A作贡献,网站A的排名就靠前了。
    而302重定向很容易被搜索引擎误认为是利用多个域名指向同一网站,那么你的网站就会被封掉,罪名是“利用重复的内容来干扰Google搜索结果的网站排名”

3、实现从www.yang.orghttps://www.yang.org的跳转

  • 修改配置文件:
vim /usr/local/nginx/conf/nginx.conf
##修改:
server {
        listen 80;
        server_name www.yang.org;
        rewrite ^/(.*)$ https://www.yang.org/$1;     ##$1表示用户在这里输入的内容保留,只会重定向$1前面的内容
        ##rewrite ^/(.*)$ https://www.yang.org/$1 permanent;  # 永久重定向(可以缓存,临时的不允许缓存)

nginx -t	
nginx -s reload	
  • 测试:
    搜索www.yang.org 页面跳转到https://www.yang.org
    搜索www.yang.org/test.html 跳转到https://www.yang.org/test.html

4、从www.yang.org/bbshttps://bbs.yang.org:的跳转

  • 修改配置文件:
vim /usr/local/nginx/conf/nginx.conf
## 写入
        location / {
            root   /bbs;
           index  index.html index.htm;
        }  
    }   
server {
        listen 80;
        server_name www.yang.org;
        #rewrite ^/(.*)$ https://www.yang.org/$1;     ##$1表示用户在这里输入的内容保留,只会重定向$1前面的内容
        #rewrite ^/(.*)$ https://www.yang.org/$1 permanent;     ##永久重定向(可以缓存,临时的不允许缓存)
        rewrite ^/bbs$ https://bbs.yang.org/index.html permanent;     #表示访问www.yang.org并且以bbs结尾时,都定向到https://bbs.yang.org
  • 创建资源
mkdir /bbs
vim /bbs/index.html
##写入
https://bbs.yang.org

nginx -t	
nginx -s reload	
  • 在真机中添加解析:
vim /etc/hosts
##写入
172.25.254.51	www.yang.org bbs.yang.org
  • 测试:
    访问www.yang.org/bbs 页面会自动跳转到https://bbs.yang.org/
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值