• 首页
  • 搜索
  • 夜间模式
    ©2012-2025  Feng's Blog Theme by OneBlog
    搜索
    标签
    # 随笔 # 维修 # Wordpress # 阿里云 # 服务器 # typecho # Ghost # iphone # 网站 # word
  • 首页>
  • IT网络>
  • 正文
  • Nginx强制带www到www后跳404的解决方法

    2016年12月07日 240 阅读 9 评论 2535 字

    使用Oneinstack搭建了Typecho博客,因为博客一直用的都是不带www访问的,带www的也可以访问,这不看到其它小伙伴们都是强制带www到www的形式访问的,自己也想整个,可是一直都不行,主机配置文件和伪静态都是用的Oneinstack提供的,主机配置里也开启了强制Https且跳转到不带www上,结果就是跳404,具体为地址栏上显示的是“https://cdn.uu126.cn//index.php",另外打开的页面如果加www了也是直接跳首页,弄来弄去还是不行,头都大了!后来在Oneinstack的讨论群里救教,虽然答案没有,但是有人点拨了一下:伪静态规则故障?那就动手试试看,结果…………OK了!

    把主机配置文件中(在/usr/local/nginx/conf/vhost目录下),把下面这条删除掉:
    2016-12-09修正后,可以在达到效果的同时也能正常登录后台了,这里要感谢一下在Segmentfault给我回复的南小鸟,下面提供一下需要修改的配件文件代码:

    include /usr/local/nginx/conf/rewrite/typecho.conf;#typecho重写规则(自带)
    if ($ssl_protocol = "") {
    return 301 https://$server_name$request_uri;
    }
    if ($host != 'uu126.cn' ) {
    return 301 https://cdn.uu126.cn$request_uri;
    } 

    主要修改了OneinStack提供的301跳转代码,建议OneinStack官方是不是看着修改一下,呵呵。
    伸手党的可以看这个全部代码:

    server {
    listen 80;
    listen 443 ssl http2;
    ssl_certificate /usr/local/nginx/ssl/uu126.pem;
    ssl_certificate_key /usr/local/nginx/ssl/uu126.key;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ssl_ciphers EECDH+CHACHA20:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5;
    ssl_prefer_server_ciphers on;
    ssl_session_timeout 10m;
    ssl_session_cache builtin:1000 shared:SSL:10m;
    ssl_buffer_size 1400;
    add_header Strict-Transport-Security max-age=15768000;
    ssl_stapling on;
    ssl_stapling_verify on;
    server_name uu126.cn www.uu126.cn;
    access_log off;
    index index.html index.htm index.php;
    include /usr/local/nginx/conf/rewrite/typecho.conf;#typecho重写规则(自带)
    if ($ssl_protocol = "") {
    return 301 https://$server_name$request_uri;
    }
    if ($host != 'uu126.cn' ) {
    return 301 https://cdn.uu126.cn$request_uri;
    }
    root /data/wwwroot/uu126;

    error_page 404 = /404.html;

    error_page 502 = /502.html;

    location ~ [^/].php(/|$) {

    fastcgi_pass remote_php_ip:9000;

    fastcgi_pass unix:/dev/shm/php-cgi.sock;
    fastcgi_index index.php;
    include fastcgi.conf;

    } location ~ ..(gif|jpg|jpeg|png|bmp|swf|flv|mp4|ico)$ { expires 30d; access_log off; } location ~ ..(js|css)?$ { expires 7d; access_log off; } location ~ /.ht { deny all; } }

    请党员们根据自己的实际情况进行修改,直接扔进去可是木用的哦,^-^^-^^-^
    仅供小伙伴们参考使用,这是强制Https,并且将带www的访问跳转到不带www上,希望可以帮到各位,有问题请留言。

    本文著作权归作者 [ Feng ] 享有,未经作者书面授权,禁止转载,封面图片来源于 [ 互联网 ] ,本文仅供个人学习、研究和欣赏使用。如有异议,请联系博主及时处理。
    — END —

    读者留言9

    1. Tom Lv.2
      2017-03-30 13:53

      感谢博主,正好需要这个

    2. 江浩 博主
      2016-12-24 09:13

      其实根本不需要这样啊,多个域名同时解析到一个文件不就好了么,vhost,参考链接
      http://www.jhclouds.com/index.php/archives/17/

      1. Feng 博主
        2016-12-24 11:34
        @江浩

        我是用oneinstack一键包的,强制将带www访问不带www的,同时也强制Https,官方给的主机配置不能实现我要的这种效果,所以就修改了部分代码,可能跟军哥的LNMP有一点小差距吧@(吐舌)

    3. Feng 博主
      2016-12-11 00:25

      那就谢谢喽@(吐舌)

    4. 空樱酱 Lv.1
      2016-12-10 15:04

      路过(。・ω・。)

      1. Feng 博主
        2016-12-11 00:14
        @空樱酱

        欢迎路过的盆友,有空常来看看哦@(呵呵)

    5. themebetter Lv.1
      2016-12-09 01:28

      这解决方法不错。

      1. Feng 博主
        2016-12-11 00:10
        @themebetter

        更正一下,于2016-12-9修复之前的故障,现在已经可以正常访问前后台了,当然是强制Https同时将带www完美跳转不带www,如果是Oneinstack一键包的可以直接拿去使用,其它一键包有待测试@(哈哈)

      2. Feng 博主
        2016-12-09 12:29
        @themebetter

        今天试了一下,访问是解决了,但新的问题也来了,后台无法登陆,还得再修改一下规则

    加载更多评论
    加载中...
    — 已加载全部评论 —
    首页
    Copyright©2012-2025  All Rights Reserved.  Load:0.020 s
    Theme by OneBlog V3.6.3
    夜间模式

    开源不易,请尊重作者版权,保留基本的版权信息。