web.config 导致 IIS 中的虚拟目录出现 HTTP 500 问题

web.config causes HTTP 500 issue with virtual directory in IIS

我是 IIS 的新手,如果这是一个基本问题,我深表歉意。

我有一个为公司内部网站服务的 IIS 配置(php 而不是 asp.net)。该网站的产品版本处于 'Default Web Site' 级别,我已经将网站的演示版和测试版映射为虚拟目录。演示版和测试版本质上是 prod 目录的副本。我注意到将 web.config 复制到这些 VD 后,我仅在 VD 的根 url 上收到错误 500。 IE。主要网站 https://mainwebsite.com and works fine but https://mainwebsite.com/demo/ doesn't work while https://mainwebsite.com/demo/index.php 工作正常。

web.config 文件非常基础:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>

    <system.webServer>

    <handlers>

        </handlers>

        <defaultDocument>
            <files>
                <add value="index.php" />
            </files>
        </defaultDocument>

    <staticContent>
            <clientCache cacheControlMode="UseMaxAge" cacheControlMaxAge="00:03:00" />
        </staticContent>

    </system.webServer>
</configuration>

将 web.config 文件从 VD 中移开即可解决该问题。尽管文件相同,但我认为该文件不会引起冲突,因为我的理解是 IIS 支持多个 Web 配置文件。

虽然我有一个通过重命名或删除文件的解决方法,但我想知道是否有办法在不导致此错误的情况下保留文件。

感谢巴拿马杰克的评论,我得以解决我的问题。

我收到了包含详细错误的回复:

Error Summary 
HTTP Error 500.19 - Internal Server Error

The requested page cannot be accessed because the related configuration data for the page is invalid.

再往下:

Config Error
Cannot add duplicate collection entry of type 'add' with unique key attribute 'value' set to 'index.php' 

为了解决,我只是在web.config XML中注释掉这一行:

<add value="index.php" />

我确信有更好的方法来解决这个问题,但就目前而言,这就是我的答案,以及当日志没有用时如何从 IIS 获取更多信息。

如果你创建一个虚拟目录到另一个网站根目录 web.config 会导致这个(我个人认为这个文件的位置完全是疯了..混合了 htm 和图像等) 在没有 web.config file/excluding 的情况下将目录复制到其他地方.. 然后将虚拟目录指向那里.. 并设置一个任务来复制较新的文件..