Подскажите по настройке редиректа в Nginx, с www на без www

Аватар пользователя Valeratal

Пытаюсь настроить редирект в нжинсе

Но чет не получается

Вот что сейчас

#user 'hrportal' virtual host 'hr-portal.ru' configuration file

server {
    listen       80;
    server_name  www.hr-portal.ru;
    return       301 http://hr-portal.ru.ru$request_uri;
}
server {
    server_name hr-portal.ru www.hr-portal.ru;
    charset off;
        disable_symlinks if_not_owner from=$root_path;
        index index.html index.php;
        root $root_path;
        set $root_path /var/www/hrportal/data/www/hr-portal.ru;
        ssi on;
        access_log /var/www/httpd-logs/hr-portal.ru.access.log ;
        error_log /var/www/httpd-logs/hr-portal.ru.error.log notice;
        include /etc/nginx/vhosts-includes/*.conf;
и тд

Если я убираю "www.hr-portal.ru" в

server_name hr-portal.ru www.hr-portal.ru;

То по урлу с www открывается другой сайт

Ничего не понимаю, куда копать

пробовал верхнюю секцию server писать так, но тоже не работает

server {
    listen       80;
    server_name  www.hr-portal.ru.ru;
    return       301 http://hr-portal.ru.ru$request_uri;
}
Ключевые слова:
Тип материала:
Версия Drupal:
0 Спасибо

Комментарии

Аватар пользователя gor
gor 1 год назад

Интересно проглючил модуль nofollow. щя попробую поправить.

0 Спасибо
Аватар пользователя Graytone
Graytone 1 год назад
server {
  server_name www.example.ru;
  rewrite (.*) http://example.ru$1;
}
0 Спасибо
Аватар пользователя Lotar
Lotar 1 год назад

Как не стыдно Егорка, сломал Валерчику сайт.

0 Спасибо
Аватар пользователя gor
gor 1 год назад

Скорее топик:) порядок фильтров поменял. А то код не корректно отображался.

0 Спасибо
Аватар пользователя Valeratal
Valeratal 1 год назад

Да по всякому пробовал

вот так вписал

server {
  server_name www.hr-portal.ru;
  rewrite (.*) http://hr-portal.ru$1;
}
server {
    server_name hr-portal.ru;
    charset off;
        disable_symlinks if_not_owner from=$root_path;
        index index.html index.php;
        root $root_path;
        set $root_path /var/www/hrportal/data/www/hr-portal.ru;
        ssi on;
и тд

Теперь урл
www.hr-portal.ru
открывает другой сайт

0 Спасибо
Аватар пользователя gor
gor 1 год назад

какой это - другой?

0 Спасибо
Аватар пользователя Valeratal
Valeratal 1 год назад

сайт жены, расположенный на этом же хостинге :)

0 Спасибо
Аватар пользователя tlito
tlito 1 год назад

у вас значит в определении хоста не указан www:
https://www.nginx.com/resources/wiki/start/topics/recipes/drupal/ - тут нету а у меня есть
http://tlito.ru/node/278/ - вот тут обратите внимание на строки

server {
    server_name www.EXAMPLE.COM .EXAMPLE.COM;
    root /var/www/EXAMPLE.COM/www;

на строке server_name надо оба домена: www и без www
ну а редирект тут например https://www.digitalocean.com/community/tutorials/how-to-redirect-www-to-non-www-with-nginx-on-centos-7
и тут https://easyengine.io/tutorials/nginx/www-non-www-redirection/

0 Спасибо
Аватар пользователя Valeratal
Valeratal 1 год назад

Ну правильно, я вписываю и домен с www

Прямо сейчас вот так, по www открывается мой сайт, но редиректа нет

server {
  server_name www.hr-portal.ru;
  rewrite (.*) http://hr-portal.ru$1;
}
server {
    server_name hr-portal.ru www.hr-portal.ru;
    charset off;
        disable_symlinks if_not_owner from=$root_path;
        index index.html index.php;
        root $root_path;
        set $root_path /var/www/hrportal/data/www/hr-portal.ru;
        ssi on;
и тд
0 Спасибо
Аватар пользователя tlito
tlito 1 год назад

вставьте так и рестарьте нгиникс

server {
  server_name www.hr-portal.ru *.hr-portal.ru;

  rewrite (.*) http://hr-portal.ru$1;

}

server {

    server_name hr-portal.ru www.hr-portal.ru;

    charset off;

        disable_symlinks if_not_owner from=$root_path;

        index index.html index.php;

        root $root_path;

        set $root_path /var/www/hrportal/data/www/hr-portal.ru;

        ssi on;

0 Спасибо
Аватар пользователя tlito
tlito 1 год назад

вот мой конфиг, в котором нормально работает редирект с ввв на без ввв. (домен - а ля экзампл)

/etc/nginx/sites-available$ cat tli.co
server {
    listen                  80;
    server_name             www.tli.co tli.co;
 
    set                     $main_host          'tli.co';
 
    if ($host != $main_host) {
        rewrite             ^(.*)$              http://$main_host$1     permanent;
        break;
    }
 
    access_log              /var/log/nginx/tli.co.access.log;
    error_log               /var/log/nginx/tli.co.error.log;
 
    root                    /var/www/$main_host/www;
    index                   index.php index.html index.htm;
 
    location ~ \.php$ {
        include             /etc/nginx/conf.d/fastcgi_params.conf;
 
        fastcgi_param       SCRIPT_FILENAME     /var/www/$main_host/www$fastcgi_script_name;
        fastcgi_param       DOCUMENT_ROOT       /var/www/$main_host/www;
 
        fastcgi_param       PHP_ADMIN_VALUE     upload_tmp_dir=/var/www/$main_host/tmp/upload;
        fastcgi_param       PHP_ADMIN_VALUE     session.save_path=/var/www/$main_host/tmp/sessions;
    }
 
    location ~ /\. {
        deny                all;
        access_log          off;
        log_not_found       off;
    }

    location / {
        try_files           $uri    @cache;
    }

    location @cache {
        if ($http_cookie ~ "DRUPAL_UID") { return 405; }
        if ($request_method !~ ^(GET|HEAD)$ ) { return 405; }
        error_page 405 = @drupal;
        gzip on;
        add_header Expires "Tue, 22 Sep 1974 08:00:00 GMT";
        add_header Cache-Control "must-revalidate, post-check=0, pre-check=0";
        try_files /cache/normal/$host/${uri}_.html /cache/perm/$host/${uri}_.css /cache/perm/$host/${uri}_.js /cache/$host/0$uri.html /cache/$host/0${uri}/index.html @drupal;
    }

    location @drupal {
        rewrite ^/(.*)$ /index.php?q=$1;
    }

    location @rewrite {
        rewrite ^/(.*)$ /index.php?q=$1;
    }

    location ~ ^/images/styles/ {
        try_files $uri @rewrite;
    }

    location ~* \.(js|css|png|jpg|jpeg|gif|ico)$ {
        expires max;
        log_not_found off;
    }

}

вам надо обратить внимание на директиву server_name в которой два параметра www.tli.co и *.tli.co
и эту секцию

if ($host != $main_host) {

        rewrite             ^(.*)$              http://$main_host$1     permanent;

        break;

    }

кстати использование переменной в нгиникс - очень удобно.

0 Спасибо
Аватар пользователя Valeratal
Valeratal 1 год назад

Кажись заработало
Спасибо!

0 Спасибо
Аватар пользователя tlito
tlito 1 год назад

только сегодня обнаружил, что в этом конфиге была ошибка в секции location @cache {} - из-за чего буст показывал кеш первой страницы категории на всех остальных страницах пейджера (не учитывался параметр ?page=2 ...)
то есть надо исправить так:

try_files /cache/normal/$host/${uri}_${args}.html /cache/perm/$host/${uri}_.css /cache/perm/$host/${uri}_.js /cache/$host/0$uri.html /cache/$host/0${uri}/index.html @drupal;

добавил переменную ${args} так работает кэш буст

0 Спасибо