Skip to content

ouvrages/rack-canonical-host

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

9 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Rack Canonical Host

Rack Canonical Host is a bit of Rack middleware that lets you define a single host as the canonical host for your site, and redirect all other hostnames to that canonical host.

In the simplest case, just specify the host name and any requests coming in that aren’t for the host example.com will be rewritten with the proper host.

use Rack::CanonicalHost, 'example.com'

You could also define a constant in your environment-specific configuration files to set up a canonical host redirect for only certain environments.

CANONICAL_HOST = 'example.com'

Then, you can set up the middle are like this.

use Rack::CanonicalHost, CANONICAL_HOST if defined?(CANONICAL_HOST)

Alternatively, you can pass a block whose return value will be used to set the canonical host.

use Rack::CanonicalHost do
  case ENV['RACK_ENV'].to_sym
    when :staging then 'example.com'
    when :production then 'staging.example.com'
  end
end

Rails 3

Using Rack::CanonicalHost in your rails 3 app is pretty straight forward.

Open up your gemfile and add the following. Then ‘bundle install’ to get the gem.

gem 'rack-canonical-host'

Then create the file config/initializers/canonical_host.rb to capture the configuration block.

Rails.application.config.middleware.use Rack::CanonicalHost do
  case ENV['RACK_ENV'].to_sym
    when :development then 'localhost.example.com' #make sure this is in your dns or /etc/hosts file
    when :staging then 'staging.example.com'
    when :production then 'www.example.com'
  end
end

You will need to restart your server to have this change take effect.

Copyright © 2009 Tyler Hunt. See LICENSE for details.

About

Rack middleware for defining a canonical host name.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Ruby 100.0%