IIS web.config 如果不存在默认文档则重写
IIS web.config rewrite if no default document exists
我有一个用于 IIS 的 web.config
,如果没有定义的页面(即 index.php
),它可以部分地将请求重写到另一个本地 wwwroot
文件夹。
所以 url 如:www.blah.net/something/index.php
显示正确的页面。
但是,www.blah.net/something/
重写为另一个 URL 并忽略该目录中的 index.php
。
<configuration>
<system.webServer>
<defaultDocument enabled="true" />
<rewrite>
<rules>
<rule name="RewriteAll" stopProcessing="true">
<match url="(.*)" />
<conditions logicalGrouping="MatchAll">
<add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
</conditions>
<action type="Rewrite" url="_h5ai/public/index.php" appendQueryString="true" />
</rule>
</rules>
</rewrite>
<caching enabled="false" enableKernelCache="true" />
</system.webServer>
</configuration>
我认为您需要告诉 IIS 您的默认文档是什么。替换行
<defaultDocument enabled="true" />
与
<defaultDocument>
<files>
<clear />
<add value="index.php" />
<add value="index.htm" />
<add value="default.php" />
<add value="default.htm" />
</files>
</defaultDocument>
IIS 将按照文件名的列出顺序检查默认文档部分中列出的所有文件名,您可以有任意多个文件名。 <clear />
行告诉 IIS 忽略标准服务器设置。 (如果您没有指定任何默认文件,我认为它将查找 'Default.htm'、'Default.aspx' 和 'Default.asp'。)
很简单,只需要添加一个条件来检查文件是否存在。
<conditions>
<add input="{Document_Root}/{REQUEST_URI}/index.php" matchType="IsFile" negate="true" />
</conditions>
此外,在清除本地浏览器缓存后,或在浏览器的隐身window中验证结果。
如果问题仍然存在,请随时告诉我。
我有一个用于 IIS 的 web.config
,如果没有定义的页面(即 index.php
),它可以部分地将请求重写到另一个本地 wwwroot
文件夹。
所以 url 如:www.blah.net/something/index.php
显示正确的页面。
但是,www.blah.net/something/
重写为另一个 URL 并忽略该目录中的 index.php
。
<configuration>
<system.webServer>
<defaultDocument enabled="true" />
<rewrite>
<rules>
<rule name="RewriteAll" stopProcessing="true">
<match url="(.*)" />
<conditions logicalGrouping="MatchAll">
<add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
</conditions>
<action type="Rewrite" url="_h5ai/public/index.php" appendQueryString="true" />
</rule>
</rules>
</rewrite>
<caching enabled="false" enableKernelCache="true" />
</system.webServer>
</configuration>
我认为您需要告诉 IIS 您的默认文档是什么。替换行
<defaultDocument enabled="true" />
与
<defaultDocument>
<files>
<clear />
<add value="index.php" />
<add value="index.htm" />
<add value="default.php" />
<add value="default.htm" />
</files>
</defaultDocument>
IIS 将按照文件名的列出顺序检查默认文档部分中列出的所有文件名,您可以有任意多个文件名。 <clear />
行告诉 IIS 忽略标准服务器设置。 (如果您没有指定任何默认文件,我认为它将查找 'Default.htm'、'Default.aspx' 和 'Default.asp'。)
很简单,只需要添加一个条件来检查文件是否存在。
<conditions>
<add input="{Document_Root}/{REQUEST_URI}/index.php" matchType="IsFile" negate="true" />
</conditions>
此外,在清除本地浏览器缓存后,或在浏览器的隐身window中验证结果。
如果问题仍然存在,请随时告诉我。