2012-01-10 12 views
3

どうすればhttp://domain.com 301はhttp://www.domain.comにリダイレクトされますか?私はModRewriteに.htaccessを使用することに慣れていましたが、私はHerokuでそれを行うことはできません。 .htaccessファイルのHeroku 301 Redirect

例:

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) 
] 
} 
+0

なしここに私のために働いていないwww.yourdomainname.comにリダイレクトして、私はずっと前にこれをあきらめた、と言います。 – David

+0

私はまったく同じ問題を抱えています...まだ解決策はありませんか? – dinkelk

答えて

0

無料で新しいCustom Domainを追加する必要があります。

+0

私はhttp:// www。とhttp:// setupはどちらも動作しますが、それは私が求めているものではありません。私はあなたがhttp://domain.comに行くならwww.domain.comにロードしたいと思っています – David

3

を使用して、rack_rewrite(gemfileのgem 'rack-rewrite')を使用して、initializersディレクトリに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その後、答えの

+0

さて、私はこれをしました...しかしそれは効果がないようです。 私は/ config/initializers /を追加し、上記のコードで(明らかに私のドメイン名を変更して)rack_rewrite.rbを作成し、Herokuがラックリライトの宝石を検出してインストールしました。しかし、... domain.comをロードすると何も起こりません(ロードするだけでwwwに書き換えられません)。 – David

+0

odd - 私はプロダクションアプリからまっすぐ持ち上げました。ああ、私はRails 3.1アプリでした - https://github.com/jtrupiano/rack-rewriteの手順を見てください –

+0

私のラックアプリケーションは/ config/initializersが何であるか分かりません私のメインポストの構造ですか? – David