2017-02-14 5 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ファイルを作成した場合にのみ、サイトを応答するディレクトリを表示訪問先は本番サイトです。私は、サイトやrobots.txtのパスに行ってきました

<% if Rails.env.production? %> 
    User-Agent: * 
    Allow:/
    Disallow: /admin 
    Sitemap: http://www.example.com/sitemap 
<% else %> 
    User-Agent: * 
    Disallow:/
<% end %> 

は、私はそれはディレクトリを表示ロボットがページ内のファイルを見つけることはなかった

テンプレートが

が不足しているエラーを得ました。以前はこのファイルにrobots.html.erbという名前を付け、robots.txt.erbという名前に変更しました。エラーは継続されました。今をPagesControllerにおけるロボットの行動は、私がURLに移動したときに、この作品だけ

def robots 
    render 'pages/robots.txt.erb' 
    expires_in 6.hours, public: true 
end 

あるので、最後に、私はちょうどrespond_to行を削除しました。 これは良い練習であるかどうか、またrespond_toアクションを削除して何かを失っているのかどうか不思議です。

答えて

1

今、私たちは、これが役立つことと呼ばれるロボット

# 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 

私は願っています:)

コントローラを作成する必要がありますが、この

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

のようなルートを作成することで開始する必要があります

関連する問題