ruby-on-rails – 用于rails中子域的多个robots.txt
发布时间:2020-12-16 19:32:11 所属栏目:百科 来源:网络整理
导读:我有一个包含多个子域的站点,我希望命名的子域robots.txt与www一个不同. 我尝试使用.htaccess,但FastCGI不看它. 所以,我试图设置路由,但似乎你不能直接重写,因为每个路由都需要一个控制器: map.connect '/robots.txt',:controller = ?,:path = '/robots.www
我有一个包含多个子域的站点,我希望命名的子域robots.txt与www一个不同.
我尝试使用.htaccess,但FastCGI不看它. 所以,我试图设置路由,但似乎你不能直接重写,因为每个路由都需要一个控制器: map.connect '/robots.txt',:controller => ?,:path => '/robots.www.txt',:conditions => { :subdomain => 'www' } map.connect '/robots.txt',:path => '/robots.club.txt' 解决这个问题的最佳方法是什么? (我正在使用子域的request_routing插件) 解决方法
实际上,您可能希望在mime_types.rb中设置mime类型并在respond_to块中执行它,因此它不会将其作为“text / html”返回:
Mime::Type.register "text/plain",:txt 然后,您的路线将如下所示: map.robots '/robots.txt',:controller => 'robots',:action => 'robots' 对于rails3: match '/robots.txt' => 'robots#robots' 和这样的控制器(把文件放在你喜欢的地方): class RobotsController < ApplicationController def robots subdomain = # get subdomain,escape robots = File.read(RAILS_ROOT + "/config/robots.#{subdomain}.txt") respond_to do |format| format.txt { render :text => robots,:layout => false } end end end 冒着过度工程的风险,我甚至可能会试图缓存文件读取操作… 哦,是的,你几乎肯定要删除/移动现有的’public / robots.txt’文件. 精明的读者会注意到你可以轻松地用RAILS_ENV代替子域名…… (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |