2015-05-17 180 views
0

我在我的rails 4應用程序中有一個頁面模型。它有一個:permalink屬性,用於當有人轉到「mysite.com/pages/page-name」時,控制器找到帶有「page-name」的頁面作爲永久鏈接,然後顯示該視圖。處理從舊固定鏈接到新鏈接的重定向

pages_controller.rb:

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

網站幾個月後被起來,我想改變某一頁的永久鏈接,但是我不想失去所有的導入鏈接。我在想我會這樣做。

首先,我將add_colum:new_permalink添加到Page模型中。那麼,如果這樣的: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仍然顯示舊的URL。我想這可能不是那麼糟糕,但我想我希望它實際轉發到新頁面。也許,而不是「new_permalink」它應該是一個新的網址,實際上做一個重定向?什麼是你最好的解決方案?我可以讓它成爲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