Heroku / GoDaddy: отправить голый домен на www [закрыто]

142

Я пытаюсь выяснить, как получить голый домен для перенаправления моего сайта на домен www. Я использую Heroku и у меня есть домен от GoDaddy. Из-за Heroku мои записи A уже настроены как:

@: 75.101.145.87

@: 75.101.163.44

@: 174.129.25.170

И мой www CNAME указывает на proxy.heroku.com.

Я искал по всему интернету, но не могу найти простой, бесплатный ответ о том, как я могу сделать это перенаправление. Некоторые ответы обсуждают использование платных сервисов, чего я не хочу делать, а другие говорят о том, как войти в систему и изменить настройки Heroku, но в действительности не дают большого объяснения. Прямо сейчас, если вы зайдете на мой открытый домен, просто Heroku скажет, что такого приложения не существует, а если вы перейдете на мой домен www, это мое приложение.

Эндрю Латам
источник
8
В FAQ по Heroku говорится только о том, как выполнить перенаправление с помощью DNSimple. Их страница поддержки ссылается на StackOverflow.
Эндрю Лэтэм
32
Я думаю, что ответ Эмиля немного резок в этом, этот сайт является ресурсом для решения проблем, которые у нас есть на пути программирования, и это проблема, с которой я столкнулся прямо сейчас! : D
Даниэль Моррис
Это, вероятно, следует закрыть как Dupe, а не вне темы: stackoverflow.com/questions/16022324/…
Крис Москини
2
@ChrisMoschini принятый ответ на вопрос, на который вы ссылаетесь, не работает на GoDaddy, потому что GoDaddy не поддерживает записи ALIAS, только CNAME. Это отдельный вопрос, я думаю.
Topher Hunt
1
Независимо от того, какой A Records установлен, нет возможности иметь открытый домен, указывающий непосредственно на heroku. Мы можем только направить его на то, на wwwчто указывает CNAME your-app-name.herokuapp.com.
Четабахана

Ответы:

231

На GoDaddy используйте функцию «Пересылка», чтобы настроить переадресацию с yourdomain.comна www.yourdomain.com. Доступ к функции пересылки можно получить в диспетчере доменов в нижней части раздела «Информация о домене»:

Переадресация домена в GoDaddy

Если вы сделаете это, весь трафик на yourdomain.com будет перенаправлен в приложение Heroku CNAME (это лучший подход ).

Одно замечание, однако, если вы находитесь в стеке Cedar , не используйте его proxy.heroku.comдля хоста вашего wwwCNAME. Вместо этого используйте your-app-name.herokuapp.com. Эти детали описаны здесь .

GoDaddy также указывает, что для переадресации вашего доменного имени его запись A должна быть указана на 64.202.189.170 или должна находиться в следующих диапазонах: 50.63.202.1 - 50.63.202.31 или 184.168.221.1 - 184.168.221.31.

Райан Дейгл
источник
14
это создает предупреждение / ошибку, если вы используете SSL в качестве требования heroku? они сказали, что если https: // example.com перенаправлен, есть предупреждение.
Jaqx
2
@jaqx, это происходит со мной, вы нашли способ, чтобы пользователи не получали это предупреждение?
jackerman09
3
@ jackerman09 Я просто устал от хлопот и переключился на DNSimple
Jaqx
5
@Matt нет никакого способа сделать это с GoDaddy. При необходимости используйте функцию ALIAS / ANAME других провайдеров, таких как DNSimple или DNS Made Easy.
Райан Дейгл
3
@RyanDaigle Спасибо, Райан. Я рекомендую всем покинуть Godaddy по нескольким причинам . NameCheap.com - это то, кем я сейчас пользуюсь. Они великолепны и поддерживают то, что я пытался сделать. Кроме того, NameCheap принимает биткойны .
Мэтт
22

Вы также можете использовать http://wwwizer.com для пересылки с вашего открытого домена на ваш www. В GoDaddy в диспетчере DNS под записью A в типе заголовка @ в 174.129.25.170. Они будут автоматически перенаправлены с голого домена на домен с www. перед ним.

TMilligan
источник
5
зачем платить другую плату другому?
Бенджамин
4
Вы, сэр, спасатель. @Vezu: пересылка без ssl абсолютно бесплатна. Вы просто указываете свою запись A для голого домена на этот IP-адрес, и он перенаправляет браузер на домен www. Вам даже не нужен аккаунт с ними.
P O'Conbhui
Я пытаюсь включить wwwizer для себя, и в моей записи A у меня есть хост как "@" и указывает на 174.129.25.170, согласно инструкциям wwwizer, но я получаю их страницу с сообщением об ошибке, когда посещаю свой голый домен! Я сделал это правильно?
tx291
7

В редакторе DNS-зон GoDaddy вам нужно настроить запись CNAME www, указав @. В вашей записи A вы будете использовать подстановочный знак (*) для указания на IP-адрес и вторую запись A, которая использует @ в качестве хоста, который также будет указывать на веб-адрес. Сюда,

subdomain1.example.com will forward to your IP
www.example.com will forward to your IP
silly.example.com will forward to your IP
anything.example.com will forward to your IP

введите описание изображения здесь

Часто задаваемые вопросы

Могу ли я указать * .mydomain.com на мое приложение Heroku?

Да, используя бесплатную функцию пользовательских доменов Heroku, вы можете указать домен подстановочного знака для вашего приложения.

Какие IP-адреса я должен использовать для указания своего пользовательского домена на Heroku?

Стек маршрутизации Heroku использует набор IP-адресов, которые могут измениться в любое время, и использование записей A для указания на ваше приложение не поддерживается. Чтобы ваш домен всегда правильно указывал на сетку маршрутизации, настройте субдомены (например, www в www.example.org), используя запись CNAME:

If the app is on…   Then CNAME the subdomain to
Bamboo  yourapp.heroku.com
Cedar   yourapp.herokuapp.com

Следует избегать использования «голых» (или «голых» / «apex») доменов (например, example.org) из-за их доступности и последствий для безотказной работы.

Почему я не могу добавить subdomain.mydomain.com для моего приложения?

В некоторых случаях попытки добавить пользовательский домен (например, subdomain.mydomain.com) для приложения могут привести к ошибке, подобной этой:

 ! mydomain.com is owned by another user

Все приложения для данного базового домена должны принадлежать одной учетной записи Heroku. Вышеуказанная ошибка означает, что кто-то еще добавил пользовательский домен mydomain.com в одно из своих приложений.

kobaltz
источник
1
Будут ли IP-адрес и веб-адрес Heroku appname.heroku.com или proxy.heroku.com?
Эндрю Лэтэм
1
Вы действительно должны посмотреть на эту статью, devcenter.heroku.com/articles/custom-domains , так как она охватывает все, что вы хотите сделать.
Кобальц
1
Этот подход указывает CNAME wwwна @, который по-прежнему направляет трафик на фиксированные IP-адреса (который имеет те же недостатки, что и A-записи). Используйте перенаправление верхнего уровня, на GoDaddy это называется «пересылка».
Райан Дейгл
5

Если у вас есть настроенные IP-адреса в вашем голом домене и ваш www cname'd для yourappname.herokuapp.com, тогда все, что вам нужно сделать, это использовать что-то вроде RackRewrite в вашем приложении, чтобы перенаправлять запросы, когда они поступают в ваше приложение.

То, что вы хотите настроить, - это любой запрос к голому домену, который будет перенаправлен на ваш адрес www. После следования инструкциям по установке добавьте инициализатор в config / initializers

 ApplicationName::Application.config.middleware.insert_before(Rack::Lock, Rack
 r301 %r{.*}, 'http://www.yourdomain.com$&', :if => Proc.new {|rack_env
  rack_env['SERVER_NAME'] != 'www.yourdomain.com'
 }
 end if Rails.env == 'production'

То есть, если запрошенный URL-адрес не www.yourdomain.com, то 301 перенаправит его на www.yuordomain.com, но только если он запущен в работе.

Джон бейнон
источник
1
В идеале это делается на уровне DNS, избегая обхода фиксированных IP-адресов Heroku. Плюс, не уверен, что это приложение на Ruby или нет?
Райан Дейгл
Райан, перенаправления не могут быть сделаны на уровне DNS. Они всегда делаются по HTTP.
Эмиль Викстрем
Почему в качестве инициализатора и почему бы просто не поместить его в конфигурацию производственной среды?
Карбасс
Когда я использую heroku + мой обычный домен, должен ли я иметь какую-либо запись, указывающую на heroku? Если да, какова его ценность?
Алан Коромано
3

Для этого для работы с сетевыми решениями сделайте следующее:

Сетевые решения, указывающие yourdomain.com на www.yourdomain.com. Вот как.

  1. В Account Manager выберите Мои доменные имена

  2. Выберите доменное имя, которым вы хотите управлять

  3. В зеленом поле выберите « Изменить точки домена».

  4. Выберите Advanced DNS , затем Continue

  5. Сначала отредактируйте записи A, выбрав « Редактировать записи A».

    В качестве «@ none» введите следующий IP-адрес 205.178.189.129, очистите записи для «www» и «* (Все остальные)» , затем выберите «Продолжить».

  6. Во-вторых, отредактируйте псевдонимы хоста (записи CNAME), выбрав «Редактировать записи CNAME».

    Введите "www" в столбце Alias

    Оставьте TTL равным 7200, но в той же строке введите серверы имен, предоставляемые службой ведения блогов, в разделе «Другие хосты» [IE СЛЕДУЕТ СЕЙЧАС ИНСТРУКЦИИ HEROKU www -> yourapp.herokuapp.com (Cedar Stack)]

    Выберите Продолжить

Теперь подождите и проверьте домены с помощью следующей команды терминала:

host domain.com
host www.domain.com
blnc
источник