6

私が構築しているサイトでは、リファラーを使用して、AJAX 要求が正しい URL から来ていることを確認しようとしています。

これを行うには、Sitecore に URL をアイテムに解決させたいと考えています。例えば、

http://www.mysite.com/abc/def

パスのアイテムに解決される可能性があります

sitecore/Content/MySite/Home/abc/def

私のコードでこれを行うための推奨される方法は何ですか?

4

4 に答える 4

7

すべての回答に感謝しますが、私が必要とするすべての回答はありませんでした。これは私にとってはうまくいきました。

var url = new Uri(...);

// Obtain a SiteContext for the host and virtual path
var siteContext = SiteContextFactory.GetSiteContext(url.Host, url.PathAndQuery);

// Get the path to the Home item
var homePath = siteContext.StartPath;
if (!homePath.EndsWith("/"))
    homePath += "/";

// Get the path to the item, removing virtual path if any
var itemPath = MainUtil.DecodeName(url.AbsolutePath);
if (itemPath.StartsWith(siteContext.VirtualFolder))
    itemPath = itemPath.Remove(0,siteContext.VirtualFolder.Length);

// Obtain the item
var fullPath = homePath + itemPath;
var item = siteContext.Database.GetItem(fullPath);
于 2012-12-12T21:58:40.113 に答える
0

メソッドを使用してItemManager.GetItem(itemPath, language, version, database, securityCheck)、アイテムの(フル)パスに基づいてアイテムを解決できます。

于 2012-12-11T09:04:25.520 に答える
0

(AJAXリクエストなどで)何をしようとしているのか実際にはわかりませんがhttp://www.mysite.com/abc/def、アイテムを解決したい場合は、web.configで次のようsitecore/content/MySite/Home/abc/defに構成する必要があります。<site>

<site name="MySite" hostName="www.mysite.com" rootPath="/sitecore/content/MySite" startItem="/Home" *other attributes here* />
于 2012-12-11T08:28:53.023 に答える