【问题标题】:In Sitefinity, Sitemap generates wrong URLs在 Sitefinity 中,站点地图生成错误的 URL
【发布时间】:2019-04-10 10:13:27
【问题描述】:

在我的 sitefinity 应用程序中,当我生成站点地图时,它会成功生成,但站点地图在所有节点的 URL 中显示双语言前缀。

就像我的站点地图中生成的 url 节点

   <url>    
    <loc>http://www.example.net/en/en/individual/customer- 
    service</loc>
    <priority>1</priority>
    <xhtml:link rel="alternate" hreflang="en" 
    ref="http://www.example.net/en/en/individual/customer-service" />
     <xhtml:link rel="alternate" hreflang="ar"
     ref="http://www.example.net/en/ar/individual/customer-service" />
     </url>

But I expect the generated url node like this

   <url>    
    <loc>http://www.example.net/en/individual/customer- 
    service</loc>
    <priority>1</priority>
    <xhtml:link rel="alternate" hreflang="en" 
    ref="http://www.example.net/en/individual/customer-service" />
     <xhtml:link rel="alternate" hreflang="ar"
     ref="http://www.example.net/ar/individual/customer-service" />
   </url>

【问题讨论】:

  • 你能去管理 > 设置 > 高级 > 系统 > 网站网址设置看看有没有什么吗?
  • 我在哪里找到了具有以下规则的 URLRulesClient 和 URLRulesServer URLRulesClient RegularExpressionFilter -->[^\p{L}\-\!\$()\=\@\d_\'\.]+| \.+$ 替换为 --> - ToLower --> 选中 Trim --> 选中 URLRulesServer RegularExpressionFilter -->[^\w\-\!\$\'()\=\@\d_]+ 替换为 - -> - ToLower --> 选中 Trim --> 未选中
  • 所以在父级别中什么都没有,即站点 URL 设置?
  • @VeselinVasilev 在“站点 URL 设置”的父级所有字段为空或未选中
  • 很奇怪,你们有什么自定义的URL策略吗?这是在管理 > 设置 > 高级 > 资源 > UrlLocalizationStrategies 下

标签: sitefinity sitefinity-8


【解决方案1】:

总结一下 cmets 中讨论的内容:

问题是由 SubFolderUrlLocalizationStrategy 具有以下参数引起的: includeSubfoderPrefixForDefaultLanguage = True

删除参数可以解决问题。

这似乎是那个版本的 Sitefinity 中的站点地图模块中的一个错误,因为我在 v.10.2 中没有看到它。

保留参数并解决问题的一种方法是订阅 ISitemapGeneratorBeforeWriting 事件并在保存站点地图条目之前对其进行修改,例如替换("/en/en/", "/en/")

这篇文章展示了如何: https://knowledgebase.progress.com/articles/Article/How-to-modify-the-entries-in-sitefinity-sitemap-using-SitemapGeneratorBeforeWriting-event

protected void Application_Start(object sender, EventArgs e)
{
    Bootstrapper.Initialized += Bootstrapper_Initialized;
}

void Bootstrapper_Initialized(object sender, Telerik.Sitefinity.Data.ExecutedEventArgs e)
{
    if (e.CommandName == "Bootstrapped")
    {
        EventHub.Subscribe<ISitemapGeneratorBeforeWriting>(evt => SitemapGeneratorBeforeWritingHandler(evt));
    }
}

void SitemapGeneratorBeforeWritingHandler(ISitemapGeneratorBeforeWriting @event)
{
    var entries = @event.Entries;
    // CRUD operations over the sitemap entries goes here
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-29
    • 1970-01-01
    • 2015-08-11
    • 2017-02-03
    相关资源
    最近更新 更多