0

最近、古い HTML サイトを光沢のある新しい Ruby on Rails サイトに置き換えました。残念ながら、多くの検索エンジンは、「index.htm」のような、もはや存在しないページをまだ探しています。

不正な URL をキャッチして 404 を返すデフォルト ルートは既にありますが、.htm で終わる URL については、302 ではなく別のページにリダイレクトすることをお勧めします。

これは、現在キャッチオールを使用しているものです。

match '*a', :to => 'errors#routing'

「index.htm」やその他の *.htm をキャッチするには、その上に何を追加できますか?

4

3 に答える 3

1

レガシ ルートと同じ (.html最後にない) Rails ルートがあると仮定すると、オプションをルートに追加できるはずです:format。デフォルトの catch all ルート定義を確認してください。

match ':controller(/:action(/:id))(.:format)'

鍵は(.:format)最後にあります。それを他のルートに追加してみてください。従来の URL と非従来の URL で動作するはずです。

于 2013-03-20T14:27:34.797 に答える
1

使用するmatch '*a.htm' => redirect("/", :status => 302)

于 2013-03-21T09:50:05.513 に答える
0

最初の解決策を試しましたが、あまり成功しませんでした。しかし、これはうまくいきました。

match '*a.htm', to: 'errors#redirect_to_home'

エラーコントローラーは次のとおりです。

# -*- encoding : utf-8 -*-
class ErrorsController < ApplicationController
  def routing
    render_404
  end

  def redirect_to_home
    redirect_to root_url
  end
end
于 2013-03-20T20:00:24.087 に答える