IIS URL重写不正常404错误

问题描述 投票:0回答:1

我正在升级IIS 10上的joomla网站设置。现在我有oldsite.com和newsite.com。我的新网站文件夹结构略有不同,但页面名称和内容相同。正确,因此客户不希望丢失旧页面上的SEO排名,并希望将它们重定向到新升级网站上的更正。

我需要做以下

  • 是通配符,将被替换为在其中的URL中键入的内容 / div-services / *将重定向到/ div / * / div-questions / *将重定向到/ div / questions / * / fm-lw-services / *将重定向到/ fm-lw / * / locations / *将重定向到/ contact / * / resources / blog / *将重定向到/ blog / * / contact-us / *将重定向到/ contact / *

我最初设置我的模式

(.*)(div-services)(.*) becomes {R:1}( div){R:1}

它运作良好,直到我有匹配的短语在网址中以某种形式重复。在这种情况下,“div-services”再次出现在URL中,它也会被替换。

例如,如果url是newsite.com/div-services/xyz/abc-div-services,那么根据规则,它将替换两次出现的“div-services”,这是不需要的,我只需要替换第一次出现。我虽然这是一个简单的修复,并使我的模式如下

(.*)(/div-services/)(.*) replace to {R:1}(/div/){R:1}

即使在测试模式中它验证成功但它只是不起作用并且不重写我甚至尝试使用转义字符的URL

(.*)(\/div-services\/)(.*) becomes {R:1}(/div/){R:1}

仍然没有运气。在挖掘和挖掘后,我发现了以下示例

div-services/(.*)$ becomes div/{R:1}

这种方法运作得很好但是现在如果我没有结束正斜杠它将无法正常工作

例如,如果URL是newsite.com/div-services,它将不起作用,但是newsite.com/div-services/并且newsite.com/div-services/xyx将正常工作。

我只是在茫然,任何帮助将不胜感激。我只是不明白为什么我不能检测到正斜杠/

regex iis url-rewriting pattern-matching
1个回答
0
投票

我想到为什么这不起作用(.*)(/div-services/)(.*) becomes {R:1}(/div/){R:1}

这是因为输入在第一个正斜杠之后开始,我假设它将是整个URL,这就是为什么我的正则表达式验证但实际上不起作用。当它运行时,它只在第一个斜杠之后获取URL,这澄清了许多事情和逻辑解释,为什么我的许多模式都没有工作,即使它们会通过模式测试。希望它可以节省其他人浪费的时间和工作时间,因为我不清楚它是如何工作的

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.