加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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代替子域名……

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读