2015-05-17 2 views
0

У меня есть модель страницы в моих рельсах 4 приложения. Он имеет атрибут permalink, который используется так, что когда кто-то переходит на «mysite.com/pages/page-name», контроллер находит страницу со «именем страницы» в качестве постоянной ссылки, а затем отображает представление.Обработка перенаправления со старой постоянной ссылки на новую

pages_controller.rb:

def show 
    @page = Page.find_by_permalink!(params[:id]) 
end 

Через несколько месяцев сайт будучи, я хочу, чтобы изменить постоянную ссылку на определенную страницу, но я не хочу потерять все входящие ссылки. Я думаю, что я это сделаю.

Сначала я добавил add_colum: new_permalink к модели страницы. Тогда, если это: new_permalink атрибут был ничего, но ноль или пустым, он будет тянуть новую страницу в контроллере, как это:

def show 
    @page = Page.find_by_permalink!(params[:id]) 
    if [email protected]_permalink.blank? 
    @page = Page.find_by_permalink!(@page.new_permalink) 
    end 
end 

Это работает, но адрес в браузере по-прежнему показывает старый URL. Полагаю, это может быть не так уж плохо, но я думаю, что мне бы хотелось, чтобы он действительно перешел на новую страницу. Возможно, вместо «new_permalink» это должен быть новый url и действительно сделать перенаправление? Каким будет ваше лучшее решение для этого? И могу ли я сделать 301 переадресацию?

ответ

1

Да, вы должны использовать 301 перенаправление, чтобы и пользовательские, и поисковые системы отправили браузер в нужное место.

def show 
    @page = Page.find_by_permalink!(params[:id]) 
    if @page.new_permalink.present? 
    redirect_to page_path(@page.new_permalink), status: :moved_permanently 
    return 
    end 
end 

 Смежные вопросы

  • Нет связанных вопросов^_^