IIS 10 StaticFile 处理程序阻碍默认文档的 PHP 自定义动词

IIS 10 StaticFile 处理程序阻碍默认文档的 PHP 自定义动词

我正在尝试启用 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>

相关内容