V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
iugo
V2EX  ›  V2EX

V2EX 是怎样做 http 转 https 的?

  •  
  •   iugo · Nov 18, 2014 · 4318 views
    This topic created in 4178 days ago, the information mentioned may be changed or developed.
    http://blog.csdn.net/wzy_1988/article/details/8549290 这里看到大概有三种方法:

    1. rewrite
    2. 497 状态码 (似乎不太友好)
    3. 进入页面后跳转 (似乎这样相当于加载了两次)

    想知道 V2EX 是怎样做的?

    另:
    页面中还有 <link rel="canonical" href="https://study.congcong.us/" /> 这个需要改成 https 吗? 我的 Ghost 也是这样, 强制了 https, 但 canonical 还是 http. 有必要改吗?
    Supplement 1  ·  Nov 18, 2014
    看来 301 转向是最佳方案. 谢谢大家的帮助. Nginx 的设置方法在楼下.
    14 replies    2014-11-19 10:20:28 +08:00
    leassy
        1
    leassy  
       Nov 18, 2014
    80端口直接301到443端口即可
    我一直这样做
    tabris17
        2
    tabris17  
       Nov 18, 2014
    永久重定向
    iugo
        3
    iugo  
    OP
       Nov 18, 2014
    @leassy
    @tabris17

    具体该怎么做?

    我是这样的:

    server {
    listen 80;
    server_name example.org;
    return 301 https://example.org$request_uri;
    }

    可是之后出现了一个问题, 百度站内搜索失效. 之前还是警告页面包含非加密信息, 后来就直接失效了, 虽然也不会有提醒. 注: znsv.baidu.com 无法使用 https.
    tabris17
        4
    tabris17  
       Nov 18, 2014
    原链接失效搜索引擎当然也失效了。

    包含非加密信息是因为你引用图片脚本CSS使用了绝对地址吧
    iugo
        5
    iugo  
    OP
       Nov 18, 2014
    知道问题在哪儿了. 是 Chrome 屏蔽了该不安全脚本.
    iugo
        6
    iugo  
    OP
       Nov 18, 2014
    @tabris17 我引用的是百度

    <script type="text/javascript">document.write(unescape('%3Cdiv id="bdcs"%3E%3C/div%3E%3Cscript charset="utf-8" src="http://znsv.baidu.com/customer_search/api/js?sid=4316253844246803945') + '&plate_url=' + (encodeURIComponent(window.location.href)) + '&t=' + (Math.ceil(new Date()/3600000)) + unescape('"%3E%3C/script%3E'));</script>

    这样一行代码.

    刚开始测试的时候还正常显示, 后来被 Chrome 屏蔽了, 选择加载不安全代码后就正常了.

    虽然听说百度开始支持 https 了, 但 znsv.baidu.com 还是不支持.
    kslr
        7
    kslr  
       Nov 18, 2014
    497
    Showfom
        8
    Showfom  
    PRO
       Nov 18, 2014 via iPhone
    v2ex 从来没有强制 https 啊 做跳转是因为你在自己的设置里设置了 那当然应该是用 python 判断咯
    cokebar
        9
    cokebar  
       Nov 18, 2014
    页面引用时候可以用省略了协议的url:
    //www.example.com/index.html
    这样根据情况浏览器会相应处理
    xoxo
        10
    xoxo  
       Nov 18, 2014
    将80重定向到443同时
    输出如下http header
    Strict-Transport-Security:max-age=31536000; includeSubDomains
    leassy
        11
    leassy  
       Nov 19, 2014
    @iugo
    server {
    listen 80;
    server_name xxx.com;
    rewrite ^/(.*)$ http://www.xxx.com/$1 permanent;
    leassy
        12
    leassy  
       Nov 19, 2014
    @iugo 刚才少了个括号
    server {
    listen 80;
    server_name w9z.net;
    rewrite ^/(.*)$ http://www.w9z.net/$1 permanent;
    }
    iugo
        13
    iugo  
    OP
       Nov 19, 2014
    @kslr 497 有什么好处呢?
    iugo
        14
    iugo  
    OP
       Nov 19, 2014
    @Showfom 嗯. 我在 Chrome 和 Firefox 看到是自动跳 https. 刚才又在 IE 11 中测试, 没有跳, 依旧是 http.
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   5511 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 41ms · UTC 09:17 · PVG 17:17 · LAX 02:17 · JFK 05:17
    ♥ Do have faith in what you're doing.