nginx перенаправить на www.domain

Я хочу перенаправить сайт ВСЕГДА на www.site.com. Однако я не уверен, как заставить WWW всегда появляться впереди, если кто-то введет домен без www.

РЕДАКТИРОВАТЬ:

server {
        listen  80;
        server_name  site.com;
        rewrite ^(.*) https://www.site.com$1 permanent;
}

server {
    listen       80;
    server_name  www.site.com;
    #rewrite ^(.*) https://www.site.com$1 permanent;
    root /home/site/public_html;

        listen       443 ssl;

Если я наберу в site.com, он идет в https://www.site.com = УСПЕХ

Если я введу site.com/index.php, он перейдет к http://www.site.com = НЕТ SSL

Идеи?

2 ответа

Решение

Вы делаете это трудным путем. Вот простой способ.

server {
    listen 80;
    server_name  example.com;
    rewrite ^(.*) http://www.example.com$1 permanent;
}

server {
    listen 80;
    server_name  www.example.com;
    #The rest of your configuration goes here#
}

Лучше использовать return вместо rewriteпотому что это быстрее

server {
    listen 80;
    server_name     example.com;
    return          301 http://www.example.com$request_uri;

server {
    listen 80;
    server_name     www.example.com;
    [...]

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

Другие вопросы по тегам