2017-02-14 36 views
0

我使用动态导航替换了导轨中的默认robots.txt文件,我可以控制漫游器在我的网站上看到的内容。使用导轨呈现动态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动作丢失任何东西。

回答

1

则需要通过创建这样

# config/routes.rb 
# 
# Dynamic robots.txt 
get 'robots.:format' => 'robots#index' 

的路线现在开始,我们必须创建一个名为控制器机器人

# 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 

我希望这有助于:)