【发布时间】:2017-02-14 19:32:38
【问题描述】:
我正在将 rails 中的默认 robots.txt 文件替换为动态文件,在该文件中我可以控制机器人在我的网站上看到的内容。
我已删除 public/robots.txt 文件。在我的 PagesController 中,我定义了一个机器人操作
def robots
respond_to :text
render 'pages/robots.txt.erb'
expires_in 6.hours, public: true
end
在我的路线中
get '/robots.:format' => 'pages#robots'
我在页面视图目录中创建了一个 robots.txt.erb 文件,仅当访问的站点是生产站点时才响应。
<% if Rails.env.production? %>
User-Agent: *
Allow: /
Disallow: /admin
Sitemap: http://www.example.com/sitemap
<% else %>
User-Agent: *
Disallow: /
<% end %>
当我转到站点和 robots.txt 路径时,我得到了错误
模板丢失
在页面视图目录中没有找到 robots 文件。我之前曾将此文件命名为 robots.html.erb,然后将其重命名为 robots.txt.erb。错误仍然存在。最后我刚刚删除了 respond_to 行,所以现在 PagesController 中的 robots 操作只是
def robots
render 'pages/robots.txt.erb'
expires_in 6.hours, public: true
end
这在我访问 url 时有效。 我只是好奇这是否是一种好习惯,以及我是否会因为删除 respond_to 操作而失去任何东西。
【问题讨论】:
标签: ruby-on-rails