我们运行一个主站点,并希望在 /tesmer 文件夹下运行第二个站点。在演示站点上,它运行完美。当我将其上传到 Windows 服务器上时,/tesmer/ 正确显示。任何子页面(如 /tesmer/smmm-sinav-islemleri)都出现 404 错误。
我们使用 Url rewrite,但似乎 IIS 下的 URL rewrite 存在缺陷。
开发站点下的工作页面: http://demo.dijitall.net/izsm/tesmer/smmm-sinav-islemleri
IIS/Windows Server 2016 上无法正常工作的页面 http://yeni.izsmmmo.org.tr/tesmer/smmm-sinav-islemleri
以下是 /tesmer 文件夹中的 web.config 文件
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<rewrite>
<rules>
<rule name="Imported Rule 10">
<match url="^([0-9a-zA-Z-_/]+)$" 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?par={R:1}" appendQueryString="false" />
</rule>
<rule name="Imported Rule 20" stopProcessing="true">
<match url="^resimmap.xml$" ignoreCase="false" />
<action type="Rewrite" url="resimmap.php" />
</rule>
</rules>
</rewrite>
<httpErrors errorMode="Detailed" />
</system.webServer>
</configuration>
解决方案是什么? 正确的 URL 写入规则还是其他什么?
答案1
我添加了该规则:
<rule name="tesmer22" stopProcessing="true">
<match url="^tesmer/([0-9a-zA-Z-_/]+)$" 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="tesmer\index.php?par={R:1}" />
</rule>