IIS URL重写不正常404错误

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了IIS URL重写不正常404错误相关的知识,希望对你有一定的参考价值。

我正在升级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将正常工作。

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

答案

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

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

enter image description here

以上是关于IIS URL重写不正常404错误的主要内容,如果未能解决你的问题,请参考以下文章

IIS5.1设置URL重写?

C#客户端用WebClient上传文件至IIS服务器,报错:远程服务器返回错误: (404) 未找到

MapRequestHandler - 在 IIS 8.0 中从 .aspx 路由 .html 时出现 404.0 错误

路由 HTTP 错误 404.0 0x80070002

404页面做好后,在iis设置404的url 为啥蜘蛛索引不存在的页面的时候返回的是200啊,我应该如何设置404

当 URL 中包含句点的哈希值 (#) 时,IIS 将重定向到 404 错误页面