2

Sitecore で、クライアントがコンテンツ ツリーから robots.txt ファイルを変更する方法を設定しようとしています。「robots.txt」をルーティングするようにマップされ、ファイルの内容を返す MVC コントローラー アクションをセットアップしようとしています。私のコントローラーは次のようになります。

public class SeoController : BaseController
{
  private readonly IContentService _contentService;
  private readonly IPageContext _pageContext;
  private readonly IRenderingContext _renderingContext;

  public SeoController(IContentService contentService, IPageContext pageContext, IRenderingContext renderingContext, ISitecoreContext glassContext)
     : base(glassContext)
  {
     _contentService = contentService;
     _pageContext = pageContext;
     _renderingContext = renderingContext;
  }

  public FileContentResult Robots()
  {
     string content = string.Empty;
     var contentResponse = _contentService.GetRobotsTxtContent();

     if (contentResponse.Success && contentResponse.ContentItem != null)
     {
        content = contentResponse.ContentItem.RobotsText;
     }

     return File(Encoding.UTF8.GetBytes(content), "text/plain");
  }
}

そしてルート設定:

public class RouteConfig
{
    public static void RegisterRoutes(RouteCollection routes)
    {
        routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
        RouteTable.Routes.MapRoute("Robots.txt", "robots.txt", new { controller = "Seo", action = "Robots" });
    }
}

「.txt」拡張子のないルートを使用すると、これはすべてうまく機能します。ただし、拡張機能を追加した後、コンテキスト データベースが null であるため、ドメイン層で null 参照例外が発生します。エラーが発生する場所は次のとおりです。

public Item GetItem(string contentGuid)
{
    return Sitecore.Context.Database.GetItem(contentGuid);
}

.txt 拡張子を無視する設定が sitecore にあると仮定しています。構成の Sitecore.Pipelines.PreprocessRequest.FilterUrlExtensions 設定で許可された拡張機能として追加しようとしました。私が行方不明になる可能性のあるものは他にありますか?

4

2 に答える 2

3

わかりました、私は問題を見つけました。設定で許可されている拡張子に txt を追加する必要があると想定したのは正しかったSitecore.Pipelines.PreprocessRequest.FilterUrlExtensionsです。IgnoreUrlPrefixesただし、config ファイルの設定の下に robots.txt がリストされていました。そのため、sitecore はそのリクエストを無視していました。そのリストから削除しましたが、今はうまく機能しています。

于 2015-02-09T18:10:15.567 に答える
1

Sitecore.Pipelines.HttpRequest.FilterUrlExtensionsこれは純粋な推測ですが、 inの許可された拡張子にも追加する必要があるかもしれませんhttpRequestBegin

于 2015-02-09T17:52:22.230 に答える