Перейти к содержимому

Фотография
- - - - -

настройка redirect nginx


  • Вы не можете создать новую тему
  • Закрытая тема Тема закрыта
Сообщений в теме: 3

#1 lehatyapachkin

lehatyapachkin

    Прохожий

    Топикстартер
  • Новичок
  • 0
    2 сообщ.

Отправлено 13 Июнь 2018 в 17:42

Здравствуйте, помогите решить проблемку. у меня стоит ubuntu и nginx решил сделать redirect с site.local на www.site.local. в /etc/hosts прописал 127.0.0.1 www.site.local. и теперь если в адресной строке браузера пишу site.local, то переход на www.site.local происходит. Но если на писать ссылку в коде на site.local без www то браузер не находит такую страницу, при обновлении страницы нету и всё тут. но стоит поставить курсор в адресной строке браузера просто нажать ентр то все нормально переход есть.
разъясните почему так и что я неправильно мог сделать. заранее благодарен!


  • 0

Спонсор

#2 BaNru

BaNru

    Пацифизжу

  • суперМодератор
  • 1015
    3 690 сообщ.

Отправлено 13 Июнь 2018 в 20:59

С WWW и без - это разные сайты. WWW считается поддоменом.
Пропиши в hosts ещё одной строкой сайт без WWW.
Или пропиши маской
127.0.0.1 *.site.local
  • 0

#3 lehatyapachkin

lehatyapachkin

    Прохожий

    Топикстартер
  • Новичок
  • 0
    2 сообщ.

Отправлено 14 Июнь 2018 в 14:40

Доброго времени суток, спасибо, что пытаетесь мне разъяснить. Дело в том, что я как раз  узнал о том что с www и без www это разные сайты и дабы не дублировать т.к. поисковики этого не любят нужно делать redirect с одного на другой (какой выберешь главным). в /etc/hosts у меня было два варианта, но чтобы приблизится к реальным условия я решил воспроизвести 301 redirect.

в конфиге виртуального хоста я прописал redirect  с без www  на с www и чтобы не дублировать и осмыслить настройки redirecta убрал без www и /etc/hosts. раньше так и было прописано в /etc/hosts www.site.local, site.local. Но начитался что это два разных сайта, что нужно делать 301 redirect. в виртуальном хосте nginx я прописал
server_name www.site.local site.local;
if ($hostname = site.local) {
rewrite (.*) http://www.site.local$1;
}
и соответственно удалил якобы второй вариант из /etc/hosts, а именно site.local без www. теперь если ручками вводишь в адресною строку браузерОВ site.local то переходит на www.site.local, а если на странице тег <а и href = site.local>, то кликаешь по ссылке и нет такой странице. но в адресной строке браузера она уже прописана, обновить страницу не помогает. Но если просто поставить курсор на этот адрес site.local в адресной строке и нажать энтр переход происходит. Как это можно объяснить???

 

а и ещё если прописать оба варианта, то необходимость в redirect отпадает итак заходит и на site.local www.site.local, но так получается 2-ва разных сайта. и если в /etc/hosts прописал 127.0.0.1 www.site.local 

только этот адрес, то тогда браузер должен всегда показывать, что site.local не существует. но это не так, почему?? заранее спасибо!


Сообщение отредактировал lehatyapachkin: 14 Июнь 2018 в 14:42

  • 0

#4 miketomlin

miketomlin

    Частый гость

  • Участник
  • 17
    73 сообщ.

Отправлено 14 Июнь 2018 в 15:14

Добавьте в ссылку протокол или хотя бы // перед именем хоста.

 

Два сайта – это хорошо – расширяет бутылочное горлышко. На одном можно смело прописать безусловный редирект.


  • 0



Похожие темы Свернуть

  Название темы Форум Автор Статистика Последнее сообщение
Статистика

Количество пользователей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 скрытых пользователей