nginx rewrite配置

131 阅读1分钟

有一些路径转发的需求,虽然可以以js来实现比较简单,但是有一些缺点

  1. 对搜索引擎不友好
  2. 比较low

下面就一些常见需求记录一下方案

http跳转到https

这种情况可以直接修改腾讯云clb负载均衡的配置,在重定向配置里可以将80通过301或者302跳转到443端口

域名统一

例如用户访问www.xxx.com 的时候,希望重定向到 xxx.com, 这时候可以添加nginx如下配置

server {
    listen       80;
    server_name  www.xxx.com;
    return 301 https://xxx.com;
}

对于不同的终端访问不同的文件

例如开发了两个页面,PC端index.html,移动端index_mobile.html,可以根据ua来进行自动重定向

if ($http_user_agent ~* (android|iphone|ipod)){
    rewrite ^/(.*)$ /index_mobile.html break;
}

rewrite的行为分为4种配置 break, last, redirect, permanent

  1. rewrite break - url重写后,直接使用当前资源,不再执行location里余下的语句,完成本次请求,地址栏url不变
  2. rewrite last - url重写后,马上发起一个新的请求,再次进入server块,重试location匹配,超过10次匹配不到报500错误,地址栏url不变
  3. rewrite redirect – 返回302临时重定向,地址栏显示重定向后的url,爬虫不会更新url(因为是临时)
  4. rewrite permanent – 返回301永久重定向, 地址栏显示重定向后的url,爬虫更新url

希望访问根文件index.html的时候在url里去掉文件路径显示

可以增加如下nginx配合着

if ($request_uri = /index.html) {
    return 301 https://xxx.com;
}