我正在尝试启用 IIS 10 以允许 PHP 中的自定义动词。我已启用 PHP_via_FastCGI 来接受所有动词。当我指定完整路径(包括末尾的 index.php)时,此操作可正常工作。
问题是当我没有在 URL 端点中指定 index.php 时。似乎在这种情况下,StaticFile 处理程序接管了,并且我收到以下引用 StaticFile 处理程序的错误:
HTTP Error 405.0 - Method Not Allowed
The page you are looking for cannot be displayed because an invalid method (HTTP verb) is being used.
StaticFile 处理程序也被设置为允许所有动词。
还值得注意的是,在我调查期间,我已删除了该站点的所有其他处理程序(PHP_via_FastCGI 和 StaticFile 除外),这些处理程序引用了 * 路径。WebDav 也未安装。我的 Web.config 基本上是空白的。我对服务器具有完全管理员访问权限。
是否有其他方法可以配置 PHP_via_FastCGI 处理程序来处理默认文档,从而删除 StaticFile 处理程序?还是我遗漏了 StaticFile 中的配置?
感谢您的帮助!
答案1
我不确定这是否是最好的方法,但我通过禁用 Web.config 中的 StaticFile 处理程序并添加 URL 重写规则来规避该问题。乍一看,这似乎有效。
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<httpErrors errorMode="Detailed" />
<handlers>
<remove name="StaticFile"/>
</handlers>
<rewrite>
<rules>
<rule name="Lang-Redirect">
<match url="(.*)$" />
<action type="Rewrite" url="{R:1}/index.php" />
</rule>
</rules>
</rewrite>
</system.webServer>
</configuration>