私が構築しているサイトでは、リファラーを使用して、AJAX 要求が正しい URL から来ていることを確認しようとしています。
これを行うには、Sitecore に URL をアイテムに解決させたいと考えています。例えば、
http://www.mysite.com/abc/def
パスのアイテムに解決される可能性があります
sitecore/Content/MySite/Home/abc/def
私のコードでこれを行うための推奨される方法は何ですか?
私が構築しているサイトでは、リファラーを使用して、AJAX 要求が正しい URL から来ていることを確認しようとしています。
これを行うには、Sitecore に URL をアイテムに解決させたいと考えています。例えば、
http://www.mysite.com/abc/def
パスのアイテムに解決される可能性があります
sitecore/Content/MySite/Home/abc/def
私のコードでこれを行うための推奨される方法は何ですか?
すべての回答に感謝しますが、私が必要とするすべての回答はありませんでした。これは私にとってはうまくいきました。
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);
メソッドを使用してItemManager.GetItem(itemPath, language, version, database, securityCheck)
、アイテムの(フル)パスに基づいてアイテムを解決できます。
(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* />