V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
jtsai
V2EX  ›  问与答

nginx rewrite 问题求助

  •  
  •   jtsai · 2018-10-17 15:46:04 +08:00 · 937 次点击
    这是一个创建于 2259 天前的主题,其中的信息可能已经有所发展或是发生改变。

    一个站点想全站 cdn,想把没带 www 和 http 的都 301 到 https://www.?.com ,写了这下面这条规则,浏览器返回 “重定向次数太多了” 正确的配置应该是怎样的?

    rewrite ^/(.*)$ https://www.?.com/$1 permanent;
    
    第 1 条附言  ·  2018-10-17 16:43:47 +08:00
    我刚刚在 cdn 后台配置找到一项强制 https 了。现在的问题变成要怎么把 “不带 www ” 强制到 “带 www ”
    3 条回复    2018-10-17 18:48:21 +08:00
    0ZXYDDu796nVCFxq
        1
    0ZXYDDu796nVCFxq  
       2018-10-17 16:06:46 +08:00 via Android   ❤️ 2
    正确姿势是加两个,server

    server {
    listen 80;
    server_name example.com www.example.com;
    return 301 https://www.example.com$request_uri;
    access_log off;
    }

    server {
    listen 443 ssl;
    server_name example.com;
    return 301 https://www.example.com$request_uri;
    access_log off;
    }
    jtsai
        2
    jtsai  
    OP
       2018-10-17 16:42:18 +08:00
    @gstqc 我理解的,cdn 过来的时候就一个 ip,我们可以设置他是 http 或者 https,也获取不到他的域名?所有你上面的配置好像不太适合?还是我理解错误了?
    ysc3839
        3
    ysc3839  
       2018-10-17 18:48:21 +08:00   ❤️ 1
    rewrite 是用来匹配有一定规则的网址的,像这种“匹配任意网址”的操作不应该用 rewrite,用其他的方法性能更好。
    比如这个问题可以用 return 301。像重定向任意网址到 index.php 可以用 try_files。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3243 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 12:26 · PVG 20:26 · LAX 04:26 · JFK 07:26
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.