Heroku 301重定向

时间:2012-01-10 11:19:06

标签: ruby-on-rails ruby redirect heroku rack

如何实现这一目标http://domain.com 301重定向到http://www.domain.com?我习惯使用.htaccess来ModRewrite它,但我知道我不能在Heroku上做到这一点。

.htaccess的例子:

Options +FollowSymlinks
RewriteEngine On

RewriteCond %{HTTP_HOST} ^domain.com [NC]
RewriteRule ^(.*)$ http://www.domain.com/$1 [R=301,L]

我的文件结构:

- /public
--- /style
--- index.html
- config.ru

我只是提供单页,我的config.ru包含:

use Rack::Static,
:urls => ["/style"],
:root => "public"

run lambda { |env|
[
200,
{
'Content-Type' => 'text/html',
'Cache-Control' => 'public, max-age=86400'
},
File.open('public/index.html', File::RDONLY)
]
} 

2 个答案:

答案 0 :(得分:3)

使用rack_rewrite(Gemfile中的gem'port-rewrite')并在初始化程序目录中创建rack_rewrite.rb;

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

这就是说,如果请求的服务器名称不是www.yourdomainname.com,那么将其重定向到www.yourdomainname.com

答案 1 :(得分:0)

您必须添加新的免费Custom Domain