理论上,您可以添加许多您想要的路线。但是,我们不应该在路由文件中添加不必要的内容,因为它会占用内存,并且需要花费一些时间来处理每个请求的所有路由逻辑,然后才能到达控制器。
如果你有很多 url 来做重定向,而不是弄乱路由文件,我建议你创建一个控制器来做重定向,因为你可以编写更灵活的代码。也许您可以创建一个表来存储from_url
(旧网址)和new_url
(用于重定向)。然后,在一个新的控制器中,只需在数据库中找到旧的 url 并进行重定向。
class RedirectionController < ApplicationController
def index
redirect = Redirection.find_by_from_url(request.request_uri)
if redirect
redirect_to redirect.to_url, :status => :moved_permanently
else
render 'public/404', :status => :not_found, :layout => false
end
end
end
最后,使用Route Globbing匹配任何 url 以进行重定向。您可以在http://guides.rubyonrails.org/routing.html上查看更多信息
match '/produits/*' => 'redirection#index'
对于像“é”这样的重音字符,您只需将该值存储在数据库中即可。对于 MySQL,您应该配置数据库服务器以存储utf-8
和更新 database.yml 中的连接。
encoding: utf8
collation: utf8_unicode_ci
您可以尝试通过以下代码进行重定向。它工作得很好。它必须# encoding: UTF-8
在文件的开头,因为有那些重音字符。
# encoding: UTF-8
class RedirectionController < ApplicationController
def index
redirect_to "produits/les-pavages/paves-carres/item/48-pavés-carrés"
end
end