静的ページをアプリケーションにレンダリングするためにstatic_pagesコントローラを使用するRailsアプリケーションがあり、特定のページの301リダイレクトを実行する最適なソリューションを探しています。例では、/私はRailsの2.3.8を使用していますRails 2.3.8アプリケーション内の静的ページで301リダイレクトを実行
/歯科医、ロンドンにリダイレクト歯科医だろう。
static_pagesコントローラは次のようになります。
class StaticPagesController < ApplicationController
def display
if static_page_exists?
render_static_page
else
raise ActiveRecord::RecordNotFound
end
end
protected
def static_page_exists?
File.exists? template_path
end
def template_path
File.join('app', 'views', 'static_pages', file_name)
end
def render_static_page
render :template => File.join('static_pages', file_name)
end
def file_name
File.join(params[:path]) + '.html.haml'
end
end
このコントローラは静的ページの名前にページと一致し、コンテンツをレンダリングします。
ルートは次のようになります。
map.static_page '*path', :controller => 'static_pages', :action => 'display'
私はアプリ/ビュー/ static_pages /歯科医-london.htmlにアプリ/ビュー/ static_pages/dentist.html.hamlファイルのページの名前を変更することができます。 hamlしかし、この変更で301リダイレクトを実行する方法がわかりません。
誰でもアドバイスをいただけますか?
私はすべての関連コードを含めていますが、何かが不足しているかどうか尋ねることは自由です。理にかなっていません。あなたの静的マッピングのセットが知られており、私は自分自身の工夫のいくつかのファイルに入れて、ファイルをロードするために、いくつかのラックミドルウェアを使用するよりも、あなたは正規表現を経由して、それを推測することができた場合は、事前に
おかげ
Railsスタックの外でリダイレクトを実行することは理にかなっていますが、私はRack Middlewareにはあまり触れられていませんが、すばらしいGoogleがこれを思いつきました(http://hugofrappier.wordpress.com/2009/11/ 18/permanent-301-redirections-a-rack-middle-in-in-rails /)は非常に有望です。応答してくれてありがとう、私は午前中にこれを試し、この質問を更新します。再度、感謝します。 –