我想设置重定向 www.somesite.com/products/dynamicstring/randomtext1/randomtext2 到www.somesite.com/products/dynamicstring
是否可以通过Regex实现这一目标?
这意味着如果我的网址是 www.somesite.com/products/myproducts/test1/test2它应该重定向到www.somesite.com/products/myproducts /
只是简要介绍一下这个: @TomLord我正在使用HttpContext.Current.Response.RedirectPermanent(matchingDefinition.To)我在一个类对象中以REGEX表达式的形式重定向“From”和“To”。例如From“/ product / *”和“/产品”,我正在阅读这些对象,并尝试重定向它们,但我无法将/ products / dynamicstring / randomtext1 /重定向到/ products / dynamicstring,其中动态字符串是随机字符串,我没有找到任何正则表达式,可用于执行此操作。例如/ products / samples / randomtext1应该重定向到/ products / samples /
答案 0 :(得分:1)
单独使用regex无法完成重定向。谷歌有点什么是现实中的正则表达。简短的回答是:它是描述搜索模式的字符串式表达式。所以它不能重定向,甚至不能用子串替换子串或做任何其他事情,然后匹配并捕获匹配字符串的部分。
话虽这么说,正则表达式可以帮助我们做你想做的事。我假设您可以使用Javascript,因为我无法在每种语言中使用解决方案。我也会假设您将尝试查看代码而不是复制粘贴并按Enter键。如果你只需要聘请程序员。如果您使用其他语言,原则应该是相同的:
虽然匹配URL通常比较复杂,例如:
^(?:https?://)?(?:[\w]+\.)(?:\.?[\w]{2,})+$
只要您确定只会获得您想要的网址,我们就会更加简单。
基本上,我们说你有:
一些带有2个点的文字以com
然后是/ products / dynamicstring /
然后发短信
然后/
然后发短信
作为正则表达式:
/\w*.\w*.com\/products\/dynamicstring\/\w*\/\w*/g
完成了Curde匹配,但是我们仍然需要添加一个捕获组,我们将使用它来提取我们需要的部分字符串:
/(\w*.\w*.com\/products\/)dynamicstring\/\w*\/\w*/g
Oke,现在让我们利用这个正则表达式完成剩下的工作:
定义正则表达式:
var regex = /\w*.\w*.com\/products\/dynamicstring\/\w*\/\w*/g;
获取当前网址。如果您已经有URL使用它。
var currUrl = window.location.href;
从字符串中提取捕获组:
var match = regex.exec(currUrl);
使用它从旧的URL获取新URL:
var redirectUrl = match[1] + myproducts/
最后,我们重定向:
window.location.replace(redirectUrl);
我直接从头脑中写下了这一切,所以我建议你仔细阅读每一步,看看它是如何工作的,阅读一些关于所用函数的文档。您可能会发现错误并学到很多东西。