我在我的IIS 8(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错误.如果我重新启动Web服务器或更改web.config文件(添加一个空的空间或东西…),它再次工作.
我不知道…我的其他应用程序没有问题,它是相同的web.config代码.
所有用户(IIS_IUSR,Admins等)都具有完整的写入和读取权限.
我的应用程序在文件夹中组织,请参阅:
我用10.0.0.7/doku或10.0.0.7/lagerverwaltung命名.
当使用IIS时,我会考虑将每个特定的站点文件夹(doku,lagerverwaltung等)转换为自己的应用程序.这样就不会混淆在加载时使用哪个web.config文件,然后应用程序可以在自己的应用程序池和线程中运行.
为此,IIS内部右键单击要转换的特定文件夹,然后单击打开的上下文菜单中的“转换为应用程序”.在随后的屏幕中,您可以选择现有的或新的应用程序池,还可以设置您可能需要的任何所需的直通身份验证.
强制子站点运行在他们自己的应用程序池中,并使用自己的web.config文件专门应该消除您的问题,潜在的后备到基础web.config.