Героку субдомен дубликат контента?Как перенаправить на домен? - PullRequest
7 голосов
/ 23 марта 2011

Google проиндексировал субдомен моего приложения Heroku: myapp.heroku.com

Это дублированный контент?

Как мне перенаправить myapp.heroku.com на mydomain.com?

Ответы [ 7 ]

5 голосов
/ 10 ноября 2011

Согласно Документам Heroku для пользовательских доменов, вы можете сделать это так:

class ApplicationController
  before_filter :ensure_domain

  APP_DOMAIN = 'myapp.mydomain.com'

  def ensure_domain
    if request.env['HTTP_HOST'] != APP_DOMAIN
      # HTTP 301 is a "permanent" redirect
      redirect_to "http://#{APP_DOMAIN}", :status => 301
    end
  end
end

Я использую этот метод, и он отлично работает. Обратите внимание, что, поскольку перенаправление возвращает статус http 301 (постоянное перенаправление), ваш сайт не будет оштрафован за дублированный контент.

Статус 301 - единственная точка, отсутствующая в решении Маркуса, но я думаю, что она важна, если вы беспокоитесь о SEO.

Редактировать: Что-то, чего нет в документах, и я забыл упомянуть - вы должны исключить среды, к которым не требуется перенаправление. Вы можете изменить оператор if на что-то вроде:

if request.env['HTTP_HOST'] != APP_DOMAIN && ENV["RAILS_ENV"] != 'development'
4 голосов
/ 23 марта 2011

Используйте дополнительные домены Heroku:

heroku addons:add custom_domains:basic
heroku domains:add www.myapp.com
heroku domains:add myapp.com

Кроме того, вам необходимо выполнить некоторые шаги по настройке в интерфейсе администратора вашего провайдера домена.Вам нужен CNAME для proxy.heroku.com и три A-RECORD для IP-адресов Heroku.Вы найдете это в Документах Heroku.

Правка, чтобы ответить на другой ответ ниже.Вы можете перенаправить myapp.com на www.myapp.com в вашем маршруте. Rb:

 constraints(:host => /^communityguides.eu/) do
    root :to => redirect("http://www.communityguides.eu")
    match '/*path', :to => redirect {|params| "http://www.communityguides.eu/#{params[:path]}"}
  end
3 голосов
/ 12 августа 2012

Я предлагаю использовать rack-canonical-host для перенаправления субдомена Heroku в ваш пользовательский домен.

2 голосов
/ 23 марта 2011

Первый ответ частично решает проблему, но вводит новую проблему.

Если вы добавите www.myapp.com и myapp.com, вам нужно будет позаботиться о перенаправлении одного из них на другой внутри вашего приложения - поэтому, если вы выберете www.myapp.com в качестве основного, вы хотите проверить если запрошенный URL-адрес НЕ www.myapp.com и перенаправить запрос на www.myapp.com - это будет покрывать запросы перенаправления, поступающие на myapp.com и myapp.heroku.com правильно. Вот пример Heroku на их документах здесь .

Кроме того, вам необходимо избавиться от контента, который Google уже проиндексировал в домене Heroku. Вам нужно будет использовать Инструменты Google WebMaster , чтобы изменить домен на www.myapp.com - это довольно простой процесс после входа в инструменты веб-мастера

2 голосов
/ 23 марта 2011

rel canonical - это одна возможность просто поместите <link rel="canonical" href="http://mydomain.com"/>, <link rel="canonical" href="http://mydomain.com/page"/>, ... на страницы своего приложения.

см. http://www.google.com/support/webmasters/bin/answer.py?answer=139394

Google будет рассматривать URL в каноническом элементе как правильный ресурс для этой конкретной страницы.

1 голос
/ 23 марта 2011

прежде всего, если вы не хотите, чтобы ваш myapp.heroku.com был проиндексирован, просто добавив метатег робота в ваш заголовок и присвоив значение «nofollow».

и для перенаправления просто добавьте еще одинОбновление метатега:

<meta http-equiv="refresh" content="2;url=http://www.heroku.com/">  

значение содержимого указывается в секундах, приведенный выше пример направит посетителей через 2 секунды на главную страницу.

надеюсь, что это поможет

0 голосов
/ 28 сентября 2013

Используйте гем hide_heroku , он использует HTTP-заголовки X-Robots-Tag, чтобы поисковые системы не индексировали что-либо под *. Herokuapp.com

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...