но при этом происходит редирект с адреса без www на адрес с www и потом выводится сообщение, что происходит бесконечный редирект, в результате сайт не открывается. Что неправильно? Как настроить редирект?
На всякий случай, если кто-то найдет тему через поиск. Еще одна популярная проблема — автоматическое добавление / в конце запроса (т.н. trailing slash) на уровне nginx:
Код
server {
...
rewrite ^([^.]*[^/])$ $1/ permanent;
...
}
Иван пишет: На всякий случай, если кто-то найдет тему через поиск. Еще одна популярная проблема — автоматическое добавление / в конце запроса (т.н. trailing slash) на уровне nginx:
Код
server {
...
rewrite ^([^.]*[^ /])$ $1/ permanent;
...
}
Если у Вас один сайт, то в /etc/nginx/bx/site_avaliable/s1.conf
далее nginx -t и если все нормально service nginx restart
Совершенно похожий вопрос, перешли на https, сертифкаты установил, ssl в конфиге включил, появилась проблема, нужно перенаправлять с www. на без них, и ещё с домена в зоне .рф на .ru. Перепробовал абсолютно все, писал в .htaccess директивы, которые работали на другом проекте нормально, здесь не работают. Пробовал писать в /etc/nginx/bx/site_avaliable/s1.conf и в ssl.s1.conf в самом верху:
Код
server {
listen 80;
server_name www.hobbyrum.ru;
return 301 http://hobbyrum.ru$request_uri;
}
server {
listen 80;
server_name hobbyrum.ru;
...
}
ничего не помогает, помогите разобраться, почему у разработчиков нет внятного ответа на эти вопросы, тема то популярная. Всегда нужно СЕОшить, редиректить и т.д. а тут как-то не получается
Олег Шамаев написал: очевидно не будет работать https
Да это очевидно, видимо я не совсем понимаю механизм работы. Я как рассуждаю, что сначала он перевернёт имя, а потом перейдёт к следующим директивам, описанным ниже и перекинет на https, полагаю что это делается как-то проще даже но не могу сообразить, не знаю в какой конфигурационный файл нужно что прописывать. То что написано на "тостере" там все в одно файле, и сертификаты и перенаправление. В окружении битрикса же все в разных местах, сертификаты в /etc/nginx/bx/conf/ssl.conf а "прослушка" в /etc/nginx/bx/site_enabled/s1.conf или в /etc/nginx/bx/site_enabled/ssl.s1.conf причем для начала ему нужно слушать 80 порт, потом переводить на 443, если я конечно все правильно понимаю.
В s1.conf такая конструкция:
Код
# Default website
server {
listen 80 default_server;
server_name _;
server_name_in_redirect off;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $host:80;
set $proxyserver "http://127.0.0.1:8888";
set $docroot "/home/bitrix/www";
index index.php;
root /home/bitrix/www;
# Redirect to ssl if need
if (-f /home/bitrix/www/.htsecure) { rewrite ^(.*)$ https://$host$1 permanent; }
# Include parameters common to all websites
include bx/conf/bitrix.conf;
# Include server monitoring locations
include bx/server_monitor.conf;
}
Тут уже есть перманентный переход на ssl, если это требуется. И по идее сначала все кто заходят по незащищенному попадают сюда. И писать по идее нужно здесь, но ни чего не работает Или ещё интереснее ситуация, нужно же отлавливать: http://www..., https://www... и также с кириллическими доменами и прочими зеркалами.
Также для корректного редиректа с https://www.hobbyrum.ru на https://hobbyrum.ru вам нужно иметь сертификат для двух этих имен, если ваш сертификат выдан только для hobbyrum.ru, то нужно его переиздать.
В том то и дело, что перед тем как сюда писать я именно так как вы написали все сделал. Вот и сейчас все прописал, скопировал ваш код, сделал рестарт, и результат тот-же, не работает. И самое интересное, не работает редирект и через .htaccess, там я прописывал так:
Редиректы приведенные мной выше - работают. Специально воспроизвел, пример test2.mosdisk.ru -> test.mosdisk.ru, при любых сочетаниях редирект будет осуществлен на https://test.mosdisk.ru
Как можно заметить, редиректы прекрасно отработали. Отсюда вопрос: в чем именно проявляется проблема? Возможно, браузер закешировал предыдущие неудачные результаты?
Иван написал: Как можно заметить, редиректы прекрасно отработали. Отсюда вопрос: в чем именно проявляется проблема? Возможно, браузер закешировал предыдущие неудачные результаты?
Попробовал из разных браузеров, из которых ранее этот сайт не посещался, с http://www.hobbyrum.ru перекидывает на https://www.hobbyrum.ru, далее браузер вешает заглушку безопасности, так как у нас куплен сертификат SSL123 на домен hobbyrum.ru, аналогично, в любом браузере. Вообще ничего не понимаю, у вас другая картина совсем...
Олег Шамаев, Да, мне помог в этом вопросе Иван, в личке, оказалось что FileZilla как-то криво работает с текстовыми ссылками, и по этому реально ничего там не правилось на самом деле, правку нужно было осуществить из консоли, и тогда все заработало как нужно.
Содержимое работоспособного решения редиректа в файле s1.conf дописываем:
Код
server {
listen 80;
server_name www.hobbyrum.ru;
add_header Strict-Transport-Security "max-age=1";
return 301 http://hobbyrum.ru;
}
# Default website
server {
файл ssl.s1.conf не трогаем, если ещё нужны домены для редиректа на текущий, дописываем их в server_name через пробел.
У меня похожая проблемма была с редиректами, сидел долго но решилось неожиданно методом тыка так сказать
Получается так потому что апатч думает что он работает как http а nginx уже редиректит на https видимо из за этого идет конфликт. В общем я решил так и уменя все работает: 1. создал пустой файл .htsecure в корне сайта 2. В .htaccess сказал ему работай как привык и редиректь все с www на без www на http
При таком раскладе он редиректит на правельный апатч а nginx уже на https потому что есть файл .htsecure в корне сайта, благодаря этому коду в /etc/nginx/bx/site_avaliable/s1.conf
Код
if (-f /home/bitrix/www/.htsecure) { rewrite ^(.*)$ https://$host$1 permanent; }
Главное все редиректы которые в .htaccess делать не на https как бы кажется так надо, а на http иначе в адресной строке браузера получался такой бред особенно просто на главной странице: