2011-08-12 90 views
1

我想設置Rails的消息過濾網址的搜索引擎優化

abc.com/news?street=2&area=3$price=6 

abc.com/news-2-3-6 

的PARAMS街道,面積和價格都是可選的

我的路線喜歡

match "/news(-:street-:area-:price)" => "news#index",:as => :news_index 

它不太好。

+1

「效果不好。」有什麼問題? – Vache

+0

當我點擊<%= link_to street.name,params.merge(:street => street)%> 我得到像「news?street = 1」這樣的網址 – doabit

回答

2

您的路線有兩個技術問題,我還會提到一個大問題。

首先,您要添加一個可選分段(-:street-:area-:price),這意味着要麼必須顯示所有術語,要麼不顯示任何術語。如果你想每一段是可選的,你需要做的是:

match "/news(-:street(-:area(-:price)))" => "news#index" 

其次,你不能指定哪些類型的字符每個方面都可以包含。在你的例子中,news-2-3-6將結束設置:street爲「2-3-6」,並將:area:price留空。你需要告訴路由哪些字符可以接受每個變量段。以下允許每個包含一個或多個數字:

match "/news(-:street(-:area(-:price)))" => "news#index", 
    :street => /\d+/, :area => /\d+/, :price => /\d+/ 

但是從長遠來看,這些修復都無濟於事。這種「搜索」網址是一個非常糟糕的主意,因爲每個細分都取決於以前細分的存在。我的意思是,不可能提供:price沒有:area:street,並且不可能在沒有:price的情況下提供:area。要僅指定:price,您的URL必須看起來像/news-0-0-6

你這樣做的理由也有根本的缺陷。這是而不是 SEO。與包含傳統查詢字符串的網址相比,包含以連字符分隔的數字段的URL爲更差。至少傳統查詢字符串包含一些可轉位術語,如streetprice

+0

感謝您的回覆,我知道這樣的網址是不好,但很多人說帶參數的網址不是一個好主意,有沒有另一種方法? – doabit

+0

@ doabit這些人是錯的。在搜索URL的情況下,查詢字符串是您的最佳選擇。 – meagar

+0

嗨,這是一個產品過濾器頁面。非常感謝您的幫助! – doabit