【问题标题】:Construct redirect URL with RegEx使用 RegEx 构造重定向 URL
【发布时间】:2014-08-18 05:50:14
【问题描述】:

如何使用正则表达式进行重定向示例

exemple.com/en/solution/platform-features

exemple.com/en/platform-features

【问题讨论】:

  • 您也可以在不使用正则表达式的情况下执行此操作。是否要使用正则表达式从 url 中删除倒数第二个目录名称?
  • 我需要使用正则表达式来执行 301 重定向,这是我的雇主要求的,是的,我想从我的网址中删除 /solution/
  • 要删除的词会一直是“解决方案”吗?如果是这样,您可以在没有正则表达式的情况下执行此操作。如果不是,如果格式与您的示例相同,您仍然可以在不使用正则表达式的情况下执行此操作。
  • 不,会有所不同
  • var tmp = url.Split('/'); tmp[tmp.Length - 2] = null; return string.Join("/", tmp.Where(x => String.IsNullOrWhiteSpace(x) == false)); 这样的东西怎么样?对于初学者。我相信这可以改进。

标签: c# asp.net regex redirect


【解决方案1】:

如果您的意图是始终删除第三个元素,那么应该这样做

var reg = new Regex(@"(?<Begin>([^/]*/){2})[^/]*/(?<End>.*)");
var match = reg.Match(@"exemple.com/en/solution/platform-features");
var result = match.Groups["Begin"].Value + match.Groups["End"].Value;

【讨论】:

    【解决方案2】:

    你不需要正则表达式;这只是一个简单的替换场景。虽然,为了使其更灵活,您可以为相关部分添加可配置值,如下所示:

    var pattern = ConfigurationManager.AppSettings["pattern"];
    var replacement = ConfigurationManager.AppSettings["replacement"];
    var url = @"exemple.com/en/solution/platform-features";
    var resultUrl = url.Replace(pattern, replacement);
    return resultUrl;
    

    然后在你的配置文件中放:

    <appSettings>
        <add key="pattern" value="/solution/" /> <!--Don't just replace "solution"-it can be another part of the url-->
        <add key="replacement" value="/" />
    </appSettings>
    

    【讨论】:

    • 谢谢,但我确实需要使用正则表达式在 sitecore 中使用别名进行 301 重定向,我知道这是菜鸟问题。
    【解决方案3】:
    /([^/]+)(?=/[^/]+/?$)
    

    这个正则表达式会得到你想要的,但无论如何你总是可以使用 / 的 split 函数并在 c# 中加入它

    【讨论】:

    • 我正在为我的新工作开发 Sitecore 功能,但之前从未做过 .NET 开发,所以我很挣扎,我需要能够使用这个正则表达式字符串在 sitecore 中使用别名进行 301 重定向。
    猜你喜欢
    • 2017-12-17
    • 1970-01-01
    • 2021-10-20
    • 2016-12-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-05
    • 1970-01-01
    相关资源
    最近更新 更多