Выполнение перенаправления 301 на статических страницах в приложении Rails 2.3.8 - PullRequest
0 голосов
/ 22 июля 2011

У меня есть приложение Rails, которое использует контроллер static_pages для рендеринга статических страниц в приложении, и я ищу лучшее решение для перенаправления 301 определенных страниц - например, / dentist redirectedto / dentist-london

Я использую Rails 2.3.8.

Контроллер 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'

Я могу переименовать страницу app / views / static_pages / dentist.html.haml файл в app / views / static_pages / dentist-london.html.haml , однако я не уверен, как выполнить перенаправление 301 для этого изменения.

МожетКто-нибудь предлагает какой-либо совет?

Я думаю, что я включил весь соответствующий код, но не стесняйтесь спрашивать, если что-то отсутствует / не имеет смысла.

Заранее спасибо

1 Ответ

1 голос
/ 22 июля 2011

Если ваш набор статических сопоставлений известен, и вы можете вывести его с помощью регулярного выражения, я бы поместил их в какой-то файл по вашему собственному замыслу, а затем использовал промежуточное программное обеспечение Rack для загрузки файла, его разбора и проверки всех входящих запросов. .

Похоже, что нет особой причины проходить через весь стек Rails, поэтому подход промежуточного программного обеспечения более оптимален.

Может быть, ваш файл сопоставления что-то вроде:

dentist,dentist-london
foo,bar

Где, если вы разделите на ,, то первый столбец - это «источник», а второй - «пункт назначения», на который нужно перенаправиться. Поместите это в Hash для быстрого поиска, и вы выключены.

...