【问题标题】:301 Redirect Regex Pattern - Sitecore Redirect module301 重定向正则表达式模式 - Sitecore 重定向模块
【发布时间】:2015-08-29 07:34:43
【问题描述】:

如果这似乎是一个初级问题,我深表歉意,但我正在尝试为 Sitecore 中的 301 模块设置重定向模式,并且很难使用正确的模式。

我需要有以下路径:

http://www.example.com/some-path/videos/2014/08/08/15/20/some-item-title

转换为: http://www.example.com/some-path/videos/some-item-title

基本上去掉数字文件夹。我该如何做到这一点,但保留路径的开头和末尾的项目名称。

https 安全版本将不胜感激。谢谢。

编辑

注意,数字文件夹始终采用上述格式:有一个 4 位文件夹,后面是四个 2 位文件夹。

some-path/whatever/4444/22/22/22/22/item-name

【问题讨论】:

  • 所以你想让正则表达式匹配整个链接而不需要/2014/08/08/15/20
  • 是的,完全正确..它总是采用这种格式...

标签: regex redirect sitecore url-redirection


【解决方案1】:

这将符合您的“不那么全球化”的要求。

var pattern = @"^(https?://[^/]*/some-path/videos/)\d{4}/\d{2}/\d{2}/\d{2}/\d{2}/(.*)$";
var match = Regex.Match(myurl, pattern, RegexOptions.IgnoreCase);
var rewrittenUrl = string.Empty;
if (match.Success)
{
    rewrittenUrl = match.Groups[1].Value + match.Groups[2].Value;
}

请注意,我选择忽略大小写。鉴于您正在处理 URL,这可能是正确的行为。我编辑了原始帖子,以便该模式现在可以匹配任何主机。

【讨论】:

  • 太棒了..谢谢。效果很好。只是出于好奇,如果我不关心子域/域,它会是什么样子,所以 http://DEV.example.com/....https://TEST.example2.com/...http://localhost/... 应该仍然有效。
  • 我什至不认为你应该关心 http(s) 部分,因为它是一个内部重定向......除非你将 http 流量重定向到 http。你只关心 url 路径部分。
【解决方案2】:

你的正则表达式可能是这样的:

(https?:\/\/.*)\/\d{4}\/(\d{2}\/){4}(.*)

还有你的替代品:

$1/$3

它将保留 https,因为在这种情况下 s? 等同于 s{0,1} 并且这部分包含在第一个括号包裹的块中。

【讨论】:

  • 这似乎不起作用。另外,我希望有一个不那么“全局”的解决方案......我只希望它发生在/some-path/videos/ 路径下的项目上。我只想删除始终采用该格式的数字路径。有一个 4 位数的文件夹,然后是四个 2 位数的文件夹。
猜你喜欢
  • 1970-01-01
  • 2020-10-14
  • 2018-04-19
  • 1970-01-01
  • 1970-01-01
  • 2018-05-31
  • 2012-06-21
  • 2017-06-21
  • 2014-12-05
相关资源
最近更新 更多