2016-04-24 8 views
0

sitecoreプロジェクトでマルチサイトソリューションを実装しました。 Googleではプロダクションサーバーの特定のディレクトリのクロールを防止するため、robots.txtをウェブサイトのルートディレクトリに配置しています。Sitecoreマルチサイト環境で特定のWebサイトの検索エンジンのクロールを回避する方法

ここでもう1つのウェブサイトbeta.example.comをプロダクションサーバーにホストしますが、このサブドメインのクロールを避けたいと考えています。

これはマルチサイト環境であり、robots.txtファイルが1つのみであるため、どのように達成できますか。どのようにして、このクロールメカニズムを特定のウェブサイト特有のために機能させることができますか?

このためにパイプラインメカニズムを記述する必要がありますか。

おかげ

答えて

3

次のようにあなたのrobots.txtを処理するカスタムハンドラを追加することができます。そして、あなたのashxの背後にあるコードでは、あなたがするために必要なロジックを記述することができます

<customHandlers> 
    <handler trigger="robots.txt" handler="RobotsTxtHandler.ashx" /> 
</customHandlers> 

を必要なrobots.txtを読み込みます。

public void ProcessRequest(HttpContext context) 
{ 
    var database = Factory.GetDatabase("web"); 
    var path = string.Format("{0}{1}", Context.Site.RootPath, Context.Site.StartItem) 
    Item siteRoot = database.GetItem(path) 
    if (siteRoot != null) 
    { 
     context.Response.Clear(); 
     context.Response.ContentType = "text/plain"; 
     context.Response.ContentEncoding = System.Text.Encoding.UTF8; 

     //Write your code to fetch the robots.txt from sitecore item 
    } 

    context.Response.End(); 
} 

ASHXの分離コードは、あなたが<system.webServer> <handlers>タグの下にweb.configファイルにハンドラを追加することも必要IHTTPハンドラ

を継承する必要があることに注意してください。

<add verb="*" path="RobotsTxtHandler.ashx" type="YourNamespace.RobotsTxtHandler, YourAssembly" name="RobotsTxtHandler" /> 

私の提案は、あなたの代わりにWebサイトのルートディレクトリのサイトコアの項目で各サイトのrobots.txtのを保存することが望ましいだろうということです。これにより、各サイトは独自のロボットを持つことができます。

関連する問題