Redirect All URL para SSL, exceto para X

1

Eu uso o NGINX no Vesta CP. Existem dois arquivos separados nginx.conf e snginx.conf . Cada um tem um bloco de servidores. Eu redireciono sites inteiros para SSL. Para fazer isso, adiciono um return 301 https://example.com$request_uri; ao nginx.conf e, em seguida, configuro totalmente o sningx.conf para os blocos de cache e localização e tudo mais.

Eu tenho um domínio que é parcial SSL / não-SSL. Nestes arquivos eu não para 301, mas em vez disso eu 301 um bloco de localização, como este:

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;}

E no bloco SSL eu excluo:

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;}

Eu preciso ter um URL disponível em SSL e não SSL, com todo o resto em SSL. Este URL é o mapa do site. Então, ambos funcionariam:

http://example.com/sitemap_index.xml

https://example.com/sitemap_index.xml

Mas qualquer outro URL seria apenas em SSL. Com o método de redirecionamento anterior, posso apontar um URL para HTTP ou excluí-lo para HTTPS, mas não para ambos.

    
por ChristopherDill 04.03.2016 / 06:23

1 resposta

2

Seu bloco de servidor https não deve redirecionar nada para http, pois você não precisa disso nessa situação.

Seu bloco de servidores http deve redirecionar tudo, exceto o URL em questão:

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;
    }
}
    
por 04.03.2016 / 07:49