Ruby on rails Rails路由-防止通过不同的URL访问同一控制器#操作?

Ruby on rails Rails路由-防止通过不同的URL访问同一控制器#操作?,ruby-on-rails,routes,Ruby On Rails,Routes,我注意到,在routes.rb文件中定义路由时,您实际上可以访问以不同方式定义的同一控制器动作 例如: map.connect "post/show/:id/:tag_title", :controller => "post", :action => "show", :requirements => {:id => /\d+/} 这意味着您可以通过访问 server.com/post/show/1234/tag_title-whatever server.com/po

我注意到,在routes.rb文件中定义路由时,您实际上可以访问以不同方式定义的同一控制器动作

例如:

map.connect "post/show/:id/:tag_title", :controller => "post", :action => "show", :requirements => {:id => /\d+/}
这意味着您可以通过访问

server.com/post/show/1234/tag_title-whatever
server.com/post/show?id=1234&tag_title=tag_title-whatever
但你也可以通过访问

server.com/post/show/1234/tag_title-whatever
server.com/post/show?id=1234&tag_title=tag_title-whatever
这是一个简单的案例,但你明白了。这不会导致搜索引擎出现问题吗?如果我没有错的话,这两个URL可能会被视为被复制的页面


有没有办法防止这种情况发生,比如告诉Rails只按定义的方式访问已定义的路由?

能够访问某些内容并不意味着它将被Google索引。除非另有说明,否则所有Rails助手函数都使用
/post/show/.
链接。只要你不链接到指定的资源,谷歌篡改内容的可能性就很小


话虽如此,我甚至不确定他们是否最终为它编制索引是否重要。

能够访问某些内容并不意味着它将被谷歌编入索引。除非另有说明,否则所有Rails助手函数都使用
/post/show/.
链接。只要你不链接到指定的资源,谷歌篡改内容的可能性就很小


话虽如此,我甚至不确定他们是否最终对其进行了索引。

如果路由是post/:id/show,则备用查询字符串方法不起作用。如果路由是post/:id/show,则备用查询字符串方法不起作用。