我提交了我的网站Map到谷歌作为example.com/sitemap其中example.com是我的域看着我的服务器访问日志请求进入sitemap.txt和sitemap.xml我可以只添加路由sitemap.txt和sitemap.xml为3个路由到同一个控制器动作?我想到了“重定向”,但我不认为它适用
当我已经向/sitemap发送请求时,我应该如何处理对sitemap.xml和sitemap.txt的请求
我提交了我的网站Map到谷歌作为example.com/sitemap其中example.com是我的域看着我的服务器访问日志请求进入sitemap.txt和sitemap.xml我可以只添加路由sitemap.txt和sitemap.xml为3个路由到同一个控制器动作?我想到了“重定向”,但我不认为它适用
当我已经向/sitemap发送请求时,我应该如何处理对sitemap.xml和sitemap.txt的请求
2条答案
按热度按时间3pmvbmvn1#
你不需要做任何事情,Rails会自动处理扩展。
假设你有一条这样的路线:
字符串
如果运行
rails routes -c sitemap
,可以看到它与模式/sitemap(.:format)
匹配。型
要响应各种格式,您可以为每种格式创建视图,如果您正在做的非常简单,则使用implicit rendering:
型
这将呈现
app/views/sitemaps/show.#{format}.html.erb
。或者你可以使用MimeResponds来显式地处理每种类型:
型
例如,如果你生成的XML没有视图,这是个好主意,或者你甚至可以通过省略块来混合。
olmpazwi2#
是的,你肯定可以轻松地路由到同一个动作,文件后缀(.xml,.txt,.html等)被定义为路由文件中的参数。例如,你可以这样定义一个路由:
字符串
在您的SitemapController中,index方法将接收一个params散列,其中包括:format键,值为'xml','txt','html'。这是否满足您的需求?