我在我的IIS8 (Win 2012)服务器上运行了多个PHP (Laravel)应用程序。这是我所有应用程序的web.config文件:
<configuration>
<system.webServer>
<rewrite>
<rules>
<rule name="Imported Rule 1" stopProcessing="true">
<match url="^(.*)/$" ignoreCase="false" />
<conditions>
<add input="{REQUEST_FILENAME}" matchType="IsDirectory" ignoreCase="false" negate="true" />
</conditions>
<action type="Redirect" redirectType="Permanent" url="{R:1}" />
</rule>
<rule name="Imported Rule 2" stopProcessing="true">
<match url="^" ignoreCase="false" />
<conditions>
<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" />
</rule>
</rules>
</rewrite>
</system.webServer>
</configuration>但是在一个应用程序中,IIS会不时地产生一个问题:我的应用程序无法工作,因为URL是错误的。如果我重新启动the服务器或更改web.config文件(添加空格或其他内容),它将再次工作。
我没有idea...my其他应用程序没有问题,它是相同的web.config代码。
所有用户(IIS_IUSR、管理员等)都具有完全的写和读访问权限。
我的应用程序是在文件夹中构建的,请看这里:


我称它为10.0.0.7/doku或10.0.0.7/lagerverwaltung。
发布于 2017-05-23 03:18:07
使用IIS时,我会考虑转换每个特定的站点文件夹(doku、lagerverwaltung等)集成到他们自己的应用程序中。这样就不会在加载时混淆使用哪个web.config文件,而且应用程序可以在自己的应用程序池和线程中运行。
为此,在IIS中,右键单击要转换的特定文件夹,然后在打开的上下文菜单中单击“转换为应用程序”。在随后的屏幕中,您可以选择现有的或新的应用程序池,还可以设置您可能需要的任何所需的传递身份验证。
强制子站点在它们自己的应用程序池中运行,并特别使用它们自己的web.config文件,可以消除潜在的回退到基本web.config的问题。
发布于 2017-05-28 12:28:22
查找问题根源的系统方法可能是在IIS中启用失败的请求跟踪,如下所述:
启用失败请求跟踪后,查看HTTP管道并检查重写规则是如何处理的。
此外,您还可以使用进程监视器查看您的应用程序池正在访问的确切文件。我会根据(1)站点所在的文件夹,然后(2)应用程序池标识(3)应用程序池进程ID对其进行筛选。
当您的服务器上没有负载时,您需要使用进程监视器,这样您就不会收到大量的进程事件。
使用上述技术,您应该能够确定恶作剧应用程序上发生了什么。
祝好运!
发布于 2017-05-28 18:02:59
默认情况下,会验证web.config架构中的所有功能,而不仅仅是可用的或已安装的资源。未安装的功能不会被选中,也不会被使用。请在您的服务器上正确安装此功能。
https://stackoverflow.com/questions/44062782
复制相似问题