Как заставить www на nginx и symfony

736
Yamen Nassif

Мне нужно всегда заменять domain.com на www.domain.com и принудительно устанавливать https, поэтому конечный результат всегда должен быть https://www.domain.com при запросе domain.com или www.domain.com. Я попробовал следующее веб-сайт все еще доступен с https, но www не форсируется:

.htaccess

RewriteCond % !^www\. RewriteRule ^(.*)$ http://www.%/$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 другой подход

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

и несколько других подходов, найденных в поиске, но, кажется, ничего не работает для меня, я был бы признателен за любую помощь. Заранее спасибо.

0

2 ответа на вопрос

2
unNamed

HTTP для HTTPS:

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

Не WWW в WWW:

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

Обязательно замените домены и имеющие дополнительный serverблок на server_nameимеющий www.domain.com.

0
Yamen Nassif

Я нашел решение для размещения ссылки:

для http

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

для https

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

Похожие вопросы