我用rails动态替换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.html.erb,然后将其重命名为robots.txt.erb。错误仍然存在。最后我刚刚删除了respond_to行,所以现在PagesController中的机器人动作只是
def robots
render 'pages/robots.txt.erb'
expires_in 6.hours, public: true
end
当我转到网址时,这是有效的。 我只是好奇这是否是一种好的做法,如果我通过删除respond_to动作而失去任何东西。
答案 0 :(得分:1)
您需要先创建一个这样的路线
# config/routes.rb
#
# Dynamic robots.txt
get 'robots.:format' => 'robots#index'
现在我们必须创建一个名为robots的控制器
# app/controllers/robots_controller.rb
class RobotsController < ApplicationController
# No layout
layout false
# Render a robots.txt file based on whether the request
def index
...
end
end
我希望这有助于:)