skeletor Posted September 13, 2012 Есть связка nginx+apache. Нужно сделать redirect с www.domain.com на domain.com. Пробовал делать rewrite только на nginx'e - не работает. Добавил ещё и на apache - и получаю зацикливание. Как правильно сделать редирект в моём случае? Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
pchol Posted September 13, 2012 if ($host = 'www.domain.com' ) { rewrite ^/(.*)$ http://domain.com/$1 permanent; } Не работает разве ? Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
skeletor Posted September 13, 2012 Нет. Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
st_re Posted September 13, 2012 конфиг нгинкса в студию.. Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
skeletor Posted September 13, 2012 rewrite пока убрал. 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; 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; } Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
pchol Posted September 13, 2012 Попробуйте добавить в server_name, свой www хост, и после этого добавить реврайт. Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
skeletor Posted September 13, 2012 Помогло, если добавить в 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. Как побороть ? Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
pchol Posted September 13, 2012 (edited) Попробуйте все таки через nginx как вам предлагали. На мой взгляд не правильно "проваливать" запросы до апача, для того чтобы опять их редиректнуть на nginx. Как вариант сделать конфигурацию вида server { server_name www.domain.com; rewrite ^(.*) http://domain.com$1 permanent; } server { server_name domain.com; ... } Edited September 13, 2012 by pchol Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
skeletor Posted September 13, 2012 pchol я пробовал, но к сожалению не получилось Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
voron Posted September 13, 2012 2skeletor А что не получилось, что наблюдаете и что в логах? Последняя конфигурация, предложенная pchol является рекомендуемой. Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
skeletor Posted September 14, 2012 Наблюдаю такую картину: в Firefox'e лишних слешей нет, зато есть в Opera и Chrome. Не знаю с чем может быть связано. Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
skeletor Posted September 17, 2012 Всем спасибо, разобрался. Код редиректа, приведённый здесь действительно рабочий. Проблема была в том, что хост с сайтом вообще не инклюдился в nginx. Теперь всё работает. Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...