Como forçar www em nginx e symfony

0

Eu preciso sempre substituir domain.com por www.dominio.com e forçar https para que o resultado final seja sempre link quando domain.com ou www.domain.com são solicitados tentei o seguinte o site ainda está acessível com https mas www não está sendo forçado:

.htaccess

RewriteCond %{HTTP_HOST} !^www\.
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]

nginx

server {
    listen 80;
    server_name domain.com;

    return 301 $scheme://www.domain.com$request_uri;
}

server {
        listen       80 default_server;
        listen       [::]:80 default_server;
        server_name  www.domain.com;
        root         /path/to/project;
        location / {
                try_files $uri /app.php$is_args$args;
        }
        location ~ ^/(app_dev|config)\.php(/|$) {
                fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock;
                fastcgi_split_path_info ^(.+\.php)(/.*)$;
                include fastcgi_params;
                fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
                fastcgi_param DOCUMENT_ROOT $realpath_root;
        }
        location ~ ^/app\.php(/|$) {
                fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock;
                fastcgi_split_path_info ^(.+\.php)(/.*)$;
                include fastcgi_params;
                fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
                fastcgi_param DOCUMENT_ROOT $realpath_root;
                internal;
        }
        location ~ \.php$ {
                return 404;
        }
        location ~ /\. {
                deny all;
        }
        location ~ /.well-known {
                allow all;
        }
        error_log /path/to/error.log;
        access_log /path/to/access.log;
}
server {
        listen 443 ssl;

        server_name  www.domain.com;

        ..rest of code..
}

nginx outra abordagem

server {
    listen      80;
    server_name domain.com;
    rewrite     ^   https://www.domain.com$request_uri? permanent;
}

e par de outras abordagens encontradas na pesquisa, mas parece que nada está funcionando para mim gostaria de receber ajuda. Agradecemos antecipadamente.

    
por Yamen Nassif 24.01.2017 / 11:41

2 respostas

0

eu encontrei a solução para postagem de referência:

para http

location / {
           if ($http_host !~ "^www\."){
                  rewrite ^(.*)$ http://www.$http_host$1 redirect;
           }
           try_files $uri /app.php$is_args$args;
}

para https

location / {
        if ($http_host !~ "^www\."){
                rewrite ^(.*)$ https://www.$http_host$1 redirect;
        }
        try_files $uri /app.php$is_args$args;
}
    
por 24.01.2017 / 11:50
2

HTTP para HTTPS:

server {
        listen 80;
        server_name *;
        location / {
                return 302 https://$host$request_uri;
        }
}

Não-WWW para WWW:

server {
        server_name domain-without-www.com;
        listen 443 ssl;
        location / {
                return 302 https://www.$host$request_uri;
        }
}

Certifique-se de substituir os domínios e ter um bloco server extra com o server_name tendo www.domain.com .

    
por 03.03.2017 / 18:45