更新机器人

时间:2012-07-02 23:32:16

标签: ruby-on-rails ruby ruby-on-rails-3 routes robots.txt

好的,我想添加这个

User-Agent: *
Disallow: /

到所有环境中的robots.txt然后生产......任何关于最好想法的想要做到这一点。我应该从公共文件夹中删除它并创建路由/视图

我在资产管道之前使用rails 3.0.14 ...任何建议

2 个答案:

答案 0 :(得分:4)

用于上传阻止robots.txt 的

Capistrano任务

我今天再次写了这篇文章,与塞尔吉奥的答案基本相同,但共享机器人特定的结果可能会节省一些时间:)

namespace :deploy do
  desc "Uploads a robots.txt that mandates the site as off-limits to crawlers"
  task :block_robots, :roles => :app do
    content = [
      '# This is a staging site. Do not index.',
      'User-agent: *',
      'Disallow: /'
    ].join($/)

    logger.info "Uploading blocking robots.txt"
    put content, "#{current_path}/public/robots.txt"
  end
end

然后使用

之类的东西从您的临时食谱中触发它
after "deploy:update_code", "deploy:block_robots"

答案 1 :(得分:3)

这是我项目中真正有用的代码(它是一个nginx配置,而不是robots.txt,但想法应该清楚)。

task :nginx_config do
  conf = <<-CONF
   server {
      listen 80;
      client_max_body_size 2M; 
      server_name #{domain_name};

      -- snip --
    }
  CONF

  put conf, "/etc/nginx/sites-available/#{application}_#{rails_env}"
end

因此,基本上,您在字符串中创建文件的内容,然后put到所需的路径。这将使capistrano通过SFTP上传内容。