Sitemap.xml доступен по адресу /sitemap.xml (при запросе карта генерируется на основе данных из хранимой процедуры falcon_sitemap).
Примечание:
При запросе происходит вызов подгружаемого файла через систему ресурсов с помощью данного правила в web.config:
<rule name="Sitemap.xml" stopprocessing="true">
<match url="(.*)sitemap\.xml"></match>
<action type="Rewrite" url="/Controls/Resource/GetFile?code=sitemap"></action>
</rule>
CREATE PROCEDURE [dbo].[falcon_sitemap]
@parameters DictionaryParameter READONLY, -- as_domain - передача домена
@s nvarchar(max) output
AS
BEGIN
declare @domain nvarchar(128) = ''
select @domain = Value from @parameters where [Key]='as_domain'
declare @result table(loc nvarchar(256) ,lastmod nvarchar(32), changefreq nvarchar(24) , priority nvarchar(10) )
insert into @result
SELECT top 1000
'https://'+ @domain + iif(code='_default', '', '/'+code) loc,
convert(nvarchar(10), modified, 120) lastmod,
'monthly' changefreq,
'0.8' priority
FROM pg_pages
WHERE isInMenu = 1 AND role = 'all' or code='_default'
-- здесь можно добавить и другие ссылки в таблицу @result по аналогии
set @s = '<?xml version="1.0" encoding="UTF-8"?>';
set @s = Replace(@s + (select * from @result FOR XML RAW ('url'), ROOT ('urlset'), ELEMENTS), '<urlset>', '<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">')
END