首頁  >  問答  >  主體

php - 使用Nginx搭建Typecho靜態資源全部302跳到404頁面

使用該方法失敗/q/10...

不光靜態資源302跳轉,而且跳轉到的404.html還無法加載,還有就是url後面的php去不掉,求大神解決! ! !

nginx具體配置如下

80埠

#
server {
        listen  80;
        server_name crazyc.cn www.crazyc.cn;
        root /var/www/html/;
        #rewrite ^/(.*)$ https://crazyc.cn/index.php permanent;
        if ($ssl_protocol = "") {
            return 301 https://$server_name$request_uri;
        }
        if ($host != 'crazyc.cn' ) {
            return 301 https://crazyc.cn$request_uri;
        }
        error_log /logs/error.log;
        charset     utf-8;
        client_body_buffer_size                         512k;
        proxy_connect_timeout                           90;
        proxy_send_timeout                              90;
        proxy_read_timeout                              4000;
        proxy_buffers                                   32 4k;
        client_max_body_size 75m;
        # Load configuration files for the default server block.
        location / {
            index index.html index.php;
            if (!-e $request_filename) {
                rewrite ^(.*)$ /index.php last;
            }
        }


    }
    include vhost/*;

vhost/下的443埠

server {
    listen       443 ssl;
    server_name crazyc.cn www.crazyc.cn;
    ssl on;
    ssl_certificate /root/.acme.sh/crazyc.cn/fullchain.cer;
    ssl_certificate_key /root/.acme.sh/crazyc.cn/crazyc.cn.key;
    ssl_protocols SSLv3 TLSv1 TLSv1.1 TLSv1.2;
    ssl_ciphers  HIGH:!ADH:!EXPORT56:RC4+RSA:+MEDIUM;
    error_log /logs/error.log;
    error_page 404 = https://crazyc.cn/404.html;
    charset     utf-8;

    client_max_body_size 75m;
        # Load configuration files for the default server block.
        location ~ .*\.php(\/.*)*$ {
            root html;
            fastcgi_index index.php;
            fastcgi_param SCRIPT_FILENAME /var/www/html$fastcgi_script_name;
            include fastcgi_params;
            fastcgi_pass  127.0.0.1:9000;
            #include fastcgi.conf;
            #fastcgi_pass  127.0.0.1:9000;
        }
        access_log logs/yourdomain.log combined;
}
我想大声告诉你我想大声告诉你2735 天前594

全部回覆(1)我來回復

  • 曾经蜡笔没有小新

    曾经蜡笔没有小新2017-05-17 09:57:38

    你的80埠裡面配的東西太多了,80裡面只需要配一樣,就是所有請求跳到443.然後具體修改443的設定。
    443裡面你只指定了php的訪問,沒有指定靜態資源的路徑。參考配置如下:

    server {
        listen 80;
        server_name crazyc.cn www.crazyc.cn;
        rewrite ^ https://$server_name$request_uri permanent;
    }
    
    server {
        listen 443 ssl;
        server_name crazyc.cn www.crazyc.cn;
        index index.php;
        charset utf-8;
        
        ssl on;
        ssl_certificate /root/.acme.sh/crazyc.cn/fullchain.cer;
        ssl_certificate_key /root/.acme.sh/crazyc.cn/crazyc.cn.key;
        ssl_ciphers "CHACHA20:GCM:HIGH:!DH:!RC4:!aNULL:!eNULL:!LOW:!3DES:!MD5:!EXP:!PSK:!SRP:!DSS";
        ssl_session_cache shared:SSL:10m;
        ssl_session_timeout 10m;
        
        # 静态资源
        location ~* .*\.(html|htm|gif|jpg|jpeg|bmp|png|ico|txt|js|css|apk|ttf|woff|woff2|svg|flv|swf)$ {
            add_header Access-Control-Allow-Origin *;
            root /example/path/; # 这里配你的静态资源文件根路径
        }
        
        # 以下是php配置
        location / {
            fastcgi_pass  127.0.0.1:9000;
            fastcgi_index index.php;
            fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
            include       fastcgi_params;
            try_files     $uri $uri/ /index.php?$args;
        }

    如果你的靜態資源與php檔案放在一起,靜態資源裡面的root可以放到外邊來,像這樣:

    server {
        listen 80;
        server_name crazyc.cn www.crazyc.cn;
        rewrite ^ https://$server_name$request_uri permanent;
    }
    
    server {
        listen 443 ssl;
        server_name crazyc.cn www.crazyc.cn;
        root /example/path/; # 这里配你的静态资源文件根路径
        index index.php;
        charset utf-8;
        
        ssl on;
        ssl_certificate /root/.acme.sh/crazyc.cn/fullchain.cer;
        ssl_certificate_key /root/.acme.sh/crazyc.cn/crazyc.cn.key;
        ssl_ciphers "CHACHA20:GCM:HIGH:!DH:!RC4:!aNULL:!eNULL:!LOW:!3DES:!MD5:!EXP:!PSK:!SRP:!DSS";
        ssl_session_cache shared:SSL:10m;
        ssl_session_timeout 10m;
        
        # 静态资源
        location ~* .*\.(html|htm|gif|jpg|jpeg|bmp|png|ico|txt|js|css|apk|ttf|woff|woff2|svg|flv|swf)$ {
            add_header Access-Control-Allow-Origin *;
        }
        
        # 以下是php配置
        location / {
            fastcgi_pass  127.0.0.1:9000;
            fastcgi_index index.php;
            fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
            include       fastcgi_params;
            try_files     $uri $uri/ /index.php?$args;
        }
    }

    回覆
    0
  • 取消回覆