ruby-on-rails – 用于rails中子域的多个robots.txt

前端之家收集整理的这篇文章主要介绍了ruby-on-rails – 用于rails中子域的多个robots.txt前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个包含多个子域的站点,我希望命名的子域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代替子域名……

原文链接:https://www.f2er.com/ruby/271277.html

猜你在找的Ruby相关文章