Есть связка nginx+apache. Нужно сделать redirect с www.domain.com на domain.com. Пробовал делать rewrite только на nginx'e - не работает. Добавил ещё и на apache - и получаю зацикливание.
Как правильно сделать редирект в моём случае?
что делал, что не работает?
> что делал, что не работает?Пробовал очень много вариантов, так что сюда даже приводить страшно.
Пока вот так сработало.
RewriteEngine On
RewriteCond %{HTTP_HOST} ^www.domain.com$ [NC]
RewriteRule ^(.*)$ http://domain.com$1 [R=301,L]
То есть добавил только в апач. nginx без rewrite'ов. Но есть проблема - оно добавляет лишний слеш в конец, и в итоге становиться так:
http://domain.com//menu.php. Как побороть ?
rewrite ^(/.*)$ http://domain.com$1 permanent;
> Есть связка nginx+apache. Нужно сделать redirect с www.domain.com на domain.com. Пробовал
> делать rewrite только на nginx'e - не работает. Добавил ещё и
> на apache - и получаю зацикливание.
> Как правильно сделать редирект в моём случае?В Nginx нужна отдельная секция server {} для www.domain.com в которой написать редирект.
правильный rewrite для этого уже написали выше.
>> Есть связка nginx+apache. Нужно сделать redirect с www.domain.com на domain.com. Пробовал
>> делать rewrite только на nginx'e - не работает. Добавил ещё и
>> на apache - и получаю зацикливание.
>> Как правильно сделать редирект в моём случае?
> В Nginx нужна отдельная секция server {} для www.domain.com в которой написать
> редирект.
> правильный rewrite для этого уже написали выше.Не помогло. Причём firefox отображает без лишних слешей, а вот opera, chrome - с ними.
>>> Есть связка nginx+apache. Нужно сделать redirect с www.domain.com на domain.com. Пробовал
>>> делать rewrite только на nginx'e - не работает. Добавил ещё и
>>> на apache - и получаю зацикливание.
>>> Как правильно сделать редирект в моём случае?
>> В Nginx нужна отдельная секция server {} для www.domain.com в которой написать
>> редирект.
>> правильный rewrite для этого уже написали выше.
> Не помогло. Причём firefox отображает без лишних слешей, а вот opera, chrome
> - с ними.хрустальный шар, в котором я обычно смотрел ваши конфиги и логи запросов, к сожалению упал и разбился. Так что смотрите в них сами.
Склеил ваш хрустальный шар и вот, что в нём видел.
server {listen XX.XX.XX.XX;
server_name domain.com;
root /usr/local/www/domain.com;
access_log off;location / {
try_files $uri @backend;
index index.html;
}location ~ \.php$ {
proxy_pass http://127.0.0.1:8080;
proxy_redirect default;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
client_max_body_size 10m;
client_body_buffer_size 128k;
proxy_send_timeout 180s;
proxy_read_timeout 180s;
proxy_buffer_size 32k;
proxy_buffers 16 32k;
proxy_busy_buffers_size 64k;
proxy_temp_file_write_size 64k;
}location @backend {
proxy_pass http://127.0.0.1:8080; &n...
proxy_redirect default;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
client_max_body_size 10m;
client_body_buffer_size 128k;
proxy_send_timeout 180s;
proxy_read_timeout 180s;
proxy_buffer_size 32k;
proxy_buffers 16 32k;
proxy_busy_buffers_size 64k;
proxy_temp_file_write_size 64k;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/local/www/nginx-dist;}
> Склеил ваш хрустальный шар и вот, что в нём видел.Люди, хорош [..censored..] прикидываться.
Я ж русским языком написал:
==cite==
В Nginx нужна отдельная секция server {} для www.domain.com в которой написать редирект.
правильный rewrite для этого уже написали выше.
==cite==Вы мне на это что ответили ?
==cite==
Не помогло. Причём firefox отображает без лишних слешей, а вот opera, chrome - с ними.
==/cite==Дальше вы мне приводите свой конфиг.
ТАК ВОТ.
ГДЕ В НЕМ:- отдельная секция server {} ?
- где в нем вышеупомянутый rewrite ?
Кроме того, вы в лог-то посмотрели?
Пробовал вот так, но так как время тестов уже истекло (сайт в продакшине), то пришлось выбросить куски кода, которые для сайта ничего не делают, поэтому и выложил без них. Но я пробовал ваш пример вот так:
server {
listen XX.XX.XX.XX;
server_name www.domain.com;
rewrite ^(/.*)$ http://domain.com$1 permanent;
}server {
listen XX.XX.XX.XX;
server_name domain.com;
root /usr/local/www/domain.com;
access_log off;
...
в логах ничего подозрительного.
> Пробовал вот так, но так как время тестов уже истекло (сайт в
> продакшине), то пришлось выбросить куски кода, которые для сайта ничего не
> делают, поэтому и выложил без них. Но я пробовал ваш пример
> вот так:теперь идем дальше. Научитесь тестировать редиректы не браузером, а консольными утилитами (curl, wget, GET из lwp-perl, что-то еще ...), или хотя бы кеши сбрасывайте, вкладки/браузеры закрывайте-открывайте, потому что конфиг 100% верен.
он скорее всего забыл убрать редирект в апаче.
и также логи не научился читать.
а неработает как? поведение опиши.
то что в логах ничего подозрительного говорит только о том что все работатет как надо.
Всем спасибо, разобрался. Код редиректа, приведённый здесь действительно рабочий. Проблема была в том, что хост с сайтом вообще не инклюдился в nginx.
Теперь всё работает.