Linux
將所有 URL 重定向到 SSL,X 除外
我在 Vesta CP 上執行 NGINX。有兩個單獨的文件
nginx.conf
和snginx.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; } }