Linux

將所有 URL 重定向到 SSL,X 除外

  • March 4, 2016

我在 Vesta CP 上執行 NGINX。有兩個單獨的文件nginx.confsnginx.conf. 每個都有一個伺服器塊。我將整個網站重定向到 SSL。為此,我在 中添加了一個return 301 https://example.com$request_uri;nginx.conf然後我完全配置了sningx.conf記憶體和位置塊以及其他所有內容。

我確實有一個域是部分 SSL/非 SSL。在這些文件中,我不是 301,而是 301 一個位置塊,如下所示:

location ~ ^/(wp-login.php|wp-admin|wp-login|shop|product|my-account|checkout-2|order-pay|order-received|add-payment-method|cart) {
return 301 https://domain.com$request_uri;}

在 SSL 塊中,我排除:

location ~ ^(?!/(wp-login.php|wp-admin|wp-login|shop|product|my-account|checkout-2|order-pay|order-received|add-payment-method|cart)) {
return  301 http://sergerpepper.com$request_uri;}

我需要在 SSL 和非 SSL 上都有一個可用的 URL,而其他一切都在 SSL 上。這個網址是站點地圖。所以這兩個都可以工作:

http://example.com/sitemap_index.xml

https://example.com/sitemap_index.xml

但是任何其他 URL 都只能在 SSL 上。使用上述重定向方法,我可以將 URL 指向 HTTP 或將其排除用於 HTTPS,但不能同時使用兩者。

您的 https 伺服器塊不應將任何內容重定向到 http,因為在這種情況下您不需要它。

您的 http server 塊應該重定向所有內容,但有問題的 URL 除外:

server {
   listen [::]:80;
   listen 80;
   server_name .example.com;
   root /srv/www/example.com;

   location = /sitemap_index.xml {
       try_files $uri =404;
   }

   location / {
       return 301 https://$host$request_uri$is_args$args;
   }
}

引用自:https://serverfault.com/questions/761501