Das Nerdlabor

SEO Optimierung von HEROKU Rails 3 App

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:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
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:

1
2
3
4
5
6
7
8
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

1
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:

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

Vielen Dank fürs lesen

Comments