IIS 重定向规则仅在引用时不带尾部斜杠时捕获文件夹

IIS 重定向规则仅在引用时不带尾部斜杠时捕获文件夹

我有一个用 PHP 构建的网站,需要通过 ISS 来销毁它,除了一个小细节之外,一切都运行正常。

它在子目录下运行,比如说测试。如果我在浏览器中访问该网站“http://域名/“它工作正常。但是如果我省略尾部斜杠并访问”http://域名“该网站出现 404 错误。

现在这可能是网站自身的内部逻辑错误地执行了此操作,但由于我没有构建它,所以我不想深入研究。我认为我可以使用 web.config 重定向规则来解决这个问题。换句话说,检测 URL 末尾是否没有尾部斜杠,然后重定向到带有尾部斜杠的等效位置。即...

<rules>
    <rule name="Add trailing slash" stopProcessing="true">
    <match url="" />
    <action type="Redirect" redirectType="Permanent" url="/" />
</rule>

这几乎可行,但实际上却不行。当我访问没有尾部斜杠的域名时,规则会被采纳,但不幸的是,当 URL 带有尾部斜杠时也会触发该规则,因此我的浏览器中最终出现无限重定向错误。

有任何想法吗?

答案1

规则模式中/确实没有将根传递给。但是,您可以通过条件中的服务器变量对其进行测试:url<match>{PATH_INFO}

<rule name="Add trailing slash">
  <match url="^$" />
  <conditions>
    <add input="{PATH_INFO}" pattern="/$" negate="true" />
  </conditions>
  <action type="Redirect" url="{PATH_INFO}/" redirectType="Permanent" />
</rule>

相关内容