2017-05-03 11 views
1

我們目前有一個網頁有這個網址:/tires?product_subtype=8。頁面內容是按特定產品子類型過濾的輪胎列表。對於搜索引擎優化的目的,我們還需要通過以下網址訪問該頁面:/lawn-and-garden如何讓頁面可以通過兩個URL訪問seo目的?

有沒有簡單的方法來做到這一點?我們正在使用Ruby on Rails框架和Nginx。如果兩個路由在config/routes.rb執行相同的任務,然後將它們路由到同一controller#action

/tires?product_subtype=1 - /industrial-tires 
/tires?product_subtype=2 - /commercial-tires 
etc... 
+0

我想你需要在控制器中測試'params [:product_subtype]'並重定向到合適的頁面。 – moveson

+0

@moveson問題是我們還需要通過其原始網址訪問網頁。我們不想將它們重定向到其他網址。例如:如果用戶訪問'/ tires?product_subtype = 8',則url將保持不變。如果用戶訪問'/ lawn-and-garden',則URL也將保持不變。沒有重定向會發生。 –

+0

在這種情況下,您只需要每個控制器呈現相同的視圖。 – moveson

回答

1

我們將在大量的網頁來這樣做。

例如:

get 'tires', to: 'welcome#index' 
get 'lawn-and-garden', to: 'welcome#index' 

UPDATE:

如果我理解你的權利,那麼你會喜歡這個頁面是由兩條路線/tires?product_subtype=1訪問以及/industrial-tires(不包括查詢參數) 。我們在其中一個項目上做了類似的事情,我們稱這些漂亮的url爲着陸頁。我能想到的兩個選項來實現這些目標網頁:

  • 如果你有很少的登陸頁面的固定數量:

    創建爲他們每個人這使得相應的亞型視圖的操作。

    def industrial_tires 
        ## render view filtered for product_subtype = 1 
    end 
    
    def commercial_tires 
        ## render view filtered for product_subtype = 2 
    end 
    ## .... so on 
    
  • 如果您有許多/可變數量的着陸頁:

    ,你必須創建一個低優先級捕獲所有路線和映射操作中有條件地呈現基於蛞蝓特定視圖。

    get '*path', to: 'tires#landing_page' ## in routes.rb at the end of the file 
    
    def landing_page 
        ## "path" would be equal to industrial-tires or commercial-tires, etc. 
        ## conditionally specify view filtered for product_subtype based on path value 
    end 
    
+0

我認爲OP要根據'product_subtype'參數的不同重定向。 – moveson

+0

這是行不通的,因爲我們必須考慮'product_subtype'查詢字符串參數。 –

+0

@ JohnKevinM.Basco所以你的意思是說你不想將相同的查詢字符串參數傳遞給第二條路線,但有多條路線,比如'''相當於'/ tires?product_subtype = 1'的'industrial-trial',''commercial-tires '相當於''/ tires?product_subtype = 2'等等。? –

1

我想您將自己的各類建議單CategoriesController併爲每個類別的動作。

/routes.rb 

... 
get 'lawn-and-garden', to: 'categories#lawn_and_garden' 
get 'industrial-tires', to: 'categories#industrial_tires' 
... 

/categories_controller.rb 

def lawn_and_garden 
    params[:product_subtype] = '8' 
    @tires = YourTireFilter.search(params) 
    render 'tires/index' 
end 

def industrial_tires 
    params[:product_subtype] = '1' 
    @tires = YourTireFilter.search(params) 
    render 'tires/index' 
end 

重複其他網址。

相關問題