如果这似乎是一个基本问题,我很抱歉,但我正在尝试为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
答案 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}
,并且此部分包含在第一个括号包裹块中。