SEO Optimierung von HEROKU Rails 3 App

There was a time, when I shared a blog. This post was written by Stephan. See all blogpost from him or stalk him on github.


Bei einem letzten Projekt wurde gewünscht, dass alle Anfragen auf eine bestimmte Domain umgeleitet werden. Außerdem sollten Anfragen der Art "domainName.de" auf "www.domainName.de" umgeleitet werden - alles im Sinne der SEO und Google Gemeinde. Dafür bot sich natürlich eine Middleware an. Im Netz wurde ich auch schnell bei Github fündig.

https://github.com/iSabanin/www_ditcher

Die dort verwendete Schleife habe ich natürlich umgetauscht, damit alle Anfragen auf www.. weitergeleitet werden. Doch damit war es nicht genug. Die Seooptimierung wollte auch die von Heroku angebotene Domain appname.heroku.com auf die www-Domain weiterleiten. Ich habe hierfür den Quellcode der Middleware angepasst:

class WwwDitcher

  def initialize(app, redirect_url)
    @app = app
    @url = redirect_url
  end

  def call(env)
    request = Rack::Request.new(env)

    if request.host.match(/(heroku.com)\z/)
      unless @url.nil?
        [301, {"Location" => @url}, self]
      else
        @app.call(env)
      end
    else
      if request.host.starts_with?("www.")
        @app.call(env)
      else
        [301, {"Location" => request.url.sub("//","//www.")}, self]
      end
    end

  end

  def each(&block)

  end

end

Nun musst du die Middleware in production.rb einbinden:

Demo:Application.configure do
  # Settings specified here will take precedence over those in config/environment.rb
  # .......


  # Middleware for redirect
   config.middleware.use "WwwDitcher", ENV["HEROKU_REDIRECT_URL"]
end

Bei der Registrierung der Middleware musst du den Namen der Heroku Konfigurationsvariable mit übergeben. Bei mir heißt diese

ENV["HEROKU_REDIRECT_URL"]

Wenn bei der Heroku App noch keine entsprechende Konfigurationsvariable gesetzt wurde, wird die originale Heroku Domain (appname.heroku.com) aufgerufen.

Um die Umleitung zu schalten, musst du nun eine beliebige url definieren:

heroku config:add HEROKU_REDIRECT_URL="http://google.de"

Vielen Dank fürs lesen