如何使两个网址可以访问页面以用于seo目的?

时间:2017-05-03 03:58:41

标签: ruby-on-rails ruby nginx seo

我们目前有一个包含此网址的网页:/tires?product_subtype=8。页面内容是由特定产品子类型过滤的轮胎列表。出于搜索引擎优化的目的,我们还需要通过此网址访问该页面:/lawn-and-garden

有一种简单的方法吗?我们正在使用Ruby on Rails框架和Nginx。

我们将在很多页面上执行此操作:

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

2 个答案:

答案 0 :(得分:1)

如果两条路线都执行相同的任务,则将它们路由到controller#action中的同一config/routes.rb

例如:

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

<强>更新

如果我理解正确,那么您希望页面/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
    
  • 如果您有多个/可变数量的着陆页:

    您必须创建一个低优先级捕获所有路由,并在映射的操作中有条件地呈现基于slug的特定视图。

    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 
    

答案 1 :(得分: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

重复其他网址。