Решено: nginx+apache redirect www.domain.com -> domain.com

Обсуждение настройки и работы сервисов, резервирования, сетевых настроек и вопросов безопасности ОС.

Модераторы: SLEDopit, Модераторы разделов

Аватара пользователя
skeletor
Сообщения: 1224

Решено: nginx+apache redirect www.domain.com -> domain.com

Сообщение skeletor »

Есть связка nginx+apache. Нужно сделать redirect с www.domain.com на domain.com. Пробовал делать rewrite только на nginx'e - не работает. Добавил ещё и на apache - и получаю зацикливание.
Как правильно сделать редирект в моём случае?
Спасибо сказали:
Аватара пользователя
SLEDopit
Модератор
Сообщения: 4824
Статус: фанат консоли (=
ОС: GNU/Debian, RHEL

Re: Решено: nginx+apache redirect www.domain.com -> domain.com

Сообщение SLEDopit »

Ну если средствами апача, то

Код: Выделить всё

RewriteEngine On
RewriteCond %{HTTP_HOST} ^www.domain.com$ [NC]
RewriteRule ^(.*)$ http://domain.com/$1 [R=301,L]
UNIX is basically a simple operating system, but you have to be a genius to understand the simplicity. © Dennis Ritchie
The more you believe you don't do mistakes, the more bugs are in your code.
Спасибо сказали:
BigBrother
Сообщения: 436
Статус: ¯\_(ツ)_/¯
ОС: linux based

Re: Решено: nginx+apache redirect www.domain.com -> domain.com

Сообщение BigBrother »

nginx

Код: Выделить всё

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

server {
        server_name domain.com;
...
...
 location / {
                proxy_pass http://127.0.0.1:8080;
                proxy_set_header Host $host;
                proxy_set_header X-Real-IP $remote_addr;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        }
}


apache

Код: Выделить всё

<VirtualHost *:8080>
    DocumentRoot ...
    ServerName domain.com
    ErrorLog ...
    CustomLog ...
...
...
</VirtualHost>
Спасибо сказали:
Аватара пользователя
skeletor
Сообщения: 1224

Re: Решено: nginx+apache redirect www.domain.com -> domain.com

Сообщение skeletor »

Вот тут и проблема - чем нужно делать редирект: apache'm или nginx'om?
Спасибо сказали:
Аватара пользователя
skeletor
Сообщения: 1224

Re: Решено: nginx+apache redirect www.domain.com -> domain.com

Сообщение skeletor »

SLEDopit писал(а): ↑
13.09.2012 16:08
Ну если средствами апача, то

Код: Выделить всё

RewriteEngine On
RewriteCond %{HTTP_HOST} ^www.domain.com$ [NC]
RewriteRule ^(.*)$ http://domain.com/$1 [R=301,L]

Вот так сработало. То есть добавил только в апач. nginx без rewrite'ов. Но есть проблема - оно добавляет лишний слеш в конец, и в итоге становиться так:
http://domain.com//menu.php
Я убрал лишний слэш в http://domain.com/$1 но ничего не изменилось. Как побороть ?
Спасибо сказали:
BigBrother
Сообщения: 436
Статус: ¯\_(ツ)_/¯
ОС: linux based

Re: Решено: nginx+apache redirect www.domain.com -> domain.com

Сообщение BigBrother »

skeletor писал(а): ↑
13.09.2012 16:20
Вот тут и проблема - чем нужно делать редирект: apache'm или nginx'om?

Тем, кто первый встречает запрос. Если apache используется для обработки php и висит на локалхосте или за внешним !Р, а nginx для статики, тогда в nginx`e.

skeletor писал(а): ↑
13.09.2012 16:46
Вот так сработало. То есть добавил только в апач. nginx без rewrite'ов. Но есть проблема - оно добавляет лишний слеш в конец, и в итоге становиться так:
http://domain.com//menu.php
Я убрал лишний слэш в http://domain.com/$1 но ничего не изменилось. Как побороть ?


nginx

Код: Выделить всё

 #remove / from end string request_uri
         if ( $query_string ~ ^(.+)\/$) {
             set $args $1;
             rewrite ^ http://domain.com$uri permanent;
             }
         if ( $request_uri ~ ^(.+)\/$) {
           rewrite ^(.+)\/$ http://domain.com$1 permanent;
            }
Спасибо сказали:
Аватара пользователя
KiWi
Бывший модератор
Сообщения: 2521
Статус: статус, статус, статус

Re: Решено: nginx+apache redirect www.domain.com -> domain.com

Сообщение KiWi »

skeletor писал(а): ↑
13.09.2012 16:46
SLEDopit писал(а): ↑
13.09.2012 16:08
Ну если средствами апача, то

Код: Выделить всё

RewriteEngine On
RewriteCond %{HTTP_HOST} ^www.domain.com$ [NC]
RewriteRule ^(.*)$ http://domain.com/$1 [R=301,L]

Вот так сработало. То есть добавил только в апач. nginx без rewrite'ов. Но есть проблема - оно добавляет лишний слеш в конец, и в итоге становиться так:
http://domain.com//menu.php
Я убрал лишний слэш в http://domain.com/$1 но ничего не изменилось. Как побороть ?

Как проверяли?
Спасибо сказали:
Аватара пользователя
skeletor
Сообщения: 1224

Re: Решено: nginx+apache redirect www.domain.com -> domain.com

Сообщение skeletor »

Заходил на сайт под разными браузерами. В одних есть слеши, в других нету.
Спасибо сказали:
Аватара пользователя
sash-kan
Администратор
Сообщения: 13939
Статус: oel ngati kameie
ОС: GNU

Re: Решено: nginx+apache redirect www.domain.com -> domain.com

Сообщение sash-kan »

skeletor писал(а): ↑
14.09.2012 14:05
В одних есть слеши, в других нету.
кэш?
Писать безграмотно - значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе. © Щерба Л. В., 1957
при сбоях форума см.блог
Спасибо сказали:
Аватара пользователя
skeletor
Сообщения: 1224

Re: Решено: nginx+apache redirect www.domain.com -> domain.com

Сообщение skeletor »

С кешем была проблема, но на эту проблему наличие/отсутствие кеша не влияло.
Есть подозрения, что в коде сайта есть ошибки и поэтому так себя ведёт. Пока разбираюсь.
Спасибо сказали:
Аватара пользователя
skeletor
Сообщения: 1224

Re: Решено: nginx+apache redirect www.domain.com -> domain.com

Сообщение skeletor »

Всем спасибо. Предложенный вариант от BigBrother для nginx'a оказался рабочим. Проблема была в том, что конфиг сайта не инклудился nginx'ом. Поправил, всё работает.
Спасибо сказали: