301 Redirect Regex Pattern - Sitecore Redirect模块

时间:2015-06-13 10:16:32

标签: regex redirect sitecore url-redirection

如果这似乎是一个基本问题,我很抱歉,但我正在尝试为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-safe版本将不胜感激。感谢。

修改

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

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

2 个答案:

答案 0 :(得分: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,这可能是正确的行为。我编辑了原始帖子,以便模式现在可以匹配任何主机。

答案 1 :(得分:0)

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

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

你的替换:

$1/$3

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