在 IIS 中 运行 slim 时找不到页面

page not found when run slim in IIS

我正在尝试 运行 在 IIS 中精简应用程序,我将其添加为默认网站中的应用程序,我已从 .htaccess 导入规则并将物理地址更新为 public, 但我仍然找不到页面 需要注意的是,当我将其添加为网站(而不是默认网站)时,它可以正常工作!但是我需要在默认网站中 运行 它才能通过网络使用 public IP 访问它。

这里是 web.config 文件

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <system.webServer>
        <rewrite>
            <rules>
                <rule name="Imported Rule 1" stopProcessing="true">
                    <match url="^" ignoreCase="false" />
                    <conditions logicalGrouping="MatchAll">
                        <add input="{REQUEST_FILENAME}" matchType="IsDirectory" ignoreCase="false" negate="true" />
                        <add input="{REQUEST_FILENAME}" matchType="IsFile" ignoreCase="false" negate="true" />
                    </conditions>
                    <action type="Rewrite" url="index.php" appendQueryString="true" />
                </rule>
            </rules>
        </rewrite>
    </system.webServer>
</configuration>

非常感谢任何建议!

如果想不加端口直接使用公网IP地址(即使用80端口),修改默认网站的端口不使用80,为新网站添加80端口绑定。

详情可参考以下步骤:

1.Open IIS 管理控制台,右键单击默认网站并单击编辑绑定。

2.Select80端口绑定修改为其他端口

3.Open另一个web应用,并为其添加80端口绑定。

错误背后的原因是由之前添加的额外设置引起的,这些设置是为了在 dependencies.php 文件

中的 Apache 服务器中运行 slim 应用程序
    $container['environment'] = function () {
     // Fix the Slim 3 subdirectory issue (#1529)
     // This fix makes it possible to run the app from localhost/slim3-app
     $scriptName = $_SERVER['SCRIPT_NAME'];
     $_SERVER['REAL_SCRIPT_NAME'] = $scriptName;
     $_SERVER['SCRIPT_NAME'] = dirname(dirname($scriptName)) . '/' . basename($scriptName);
     return new Slim\Http\Environment($_SERVER);
   };

通过删除它并检查项目权限,我让它工作了!