我有一个在 IIS 7 上运行的网站,其网站级别的默认文档仅设置为 index.php。如果我在 IIS 管理器中右键单击网站并选择浏览,我会看到 index.php 文件就在那里。如果我只是浏览到网站,例如http://my.site.com我在各种不同的语言中都看到了带有“欢迎”字样的默认 IIS 7 徽标。如果我去http://my.site.com/index.php 它可以正常打开网站。我已停止并启动该网站并运行 iisreset,但仍然没有成功。
Web.config 的默认文档部分如下所示
<defaultDocument>
<files>
<clear />
<add value="index.php" />
</files>
</defaultDocument>
我错过了什么?
答案1
所以您可以明确调用该文件,但是当您仅使用默认地址(如 127.0.0.1)时,它不起作用?我要做的第一件事是确保默认文档也设置为 index.php。即使您正确设置了文档处理程序以识别 php(如果您的 index.php 显示正确,则看起来您已经这样做了),IIS7 也不会执行此操作。
从计算机管理面板打开 IIS7 控制面板。在連接点击站点,默认网站。在右侧的下一个面板中,标题为默认网站主页 向下滚动直到看到默认文档并点击它。如果它没有 index.php 或您想要的任何默认文件名,则点击下面的添加操作并输入要使用的名称。您可能需要重新启动服务,我不确定。这应该可以解决问题,如果您只想对 IIS 下的单个站点执行此操作,则可以单击连接面板中的单个站点,然后单击默认文档。
答案2
使用名为 default.aspx 或 default.htm 的页面进行测试,看看它们是否仍可用作默认文档。如果可以,则您的托管服务提供商(我假设)可能正在覆盖默认文档。
还要确保站点或全局级别的任何 URL 重写规则不会覆盖您的默认文档。
答案3
这个问题让我抓狂,有一个对我有用的解决方案。
我在 IIS 下运行了多个网站。有些网站在默认页面上运行良好,其他网站则出现错误。
修复这个问题的方法是查看每个网站设置中的 ASP.net 选项卡。我们不运行 -any- .aspx 页面,但此选项卡保存了每个网站的 web.config 页面的路径。
就我的情况而言,无法运行的网站丢失了“ASP.net”版本。通过告诉每个网站我正在运行 4.0.x,而不是将此设置留空,所有受影响的网站都可以重新开始运行。(仅供参考,我们在服务器上运行 Coldfusion .cfm 页面)。
此设置似乎保存了存储默认页面的单个 web.config 文件的路径。即使您没有运行 .asp 或 .aspx 页面,此设置对于您的服务器查找默认页面也至关重要。