我们有一个托管的Umbraco网站,它使用UrlRewriting.net配置文件来处理重定向。客户端有大约60个已经购买并指向该网站的登陆域名,但是他们希望301将所有登陆域名重定向到实际域名以及域名后面的任何内容,对于此示例我将称之为{{ 1}}
我正在使用以下正则表达式,该正则表达式将主网站上的任何内容重定向到带有附加页面的主要网站。
http://www.mainsite.com/
<add name="GlobalRedirect"
virtualUrl="https?:\/\/((?!www\.mainsite\.co\.uk).*)\/(.*)"
rewriteUrlParameter="ExcludeFromClientQueryString"
destinationUrl="http://www.mainsite.co.uk/$2"
redirect="Domain"
redirectMode="Permanent" />
正确地被重定向到http://www.anything.co.uk/a-page
。
但是http://www.mainsite.co.uk/a-page
被重定向到http://www.anything.com/subpage/another-page
并错过了http://www.mainsite.com/another-page
。
错误超出了负面预测,但我无法解决问题。
非常感谢任何帮助。
答案 0 :(得分:0)
你的正则表达式太贪婪了。如果您将RegEx更改为:
https?:\/\/((?!www\.mainsite\.co\.uk).*?)\/(.*)
它只会匹配域之后的第一个正斜杠。所以$ 2应该包含你的例子中的subpage / another-page。
我强烈推荐一种名为Expresso的工具,用于编写和测试正则表达式。它允许您分解RegEx正在做什么,并对它们运行测试。