我想通过为根目录文件创建一个url重写规则(以摆脱与继承相关的问题)并除去子目录的静态文件处理程序来使其工作。
请将下列应用程序的根目录web.config
或修改相应的现有的,不要忘了,如果还有其他的规则移动到合适的位置。
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<rewrite>
<rules>
<rule name="ROOT_FILE_CHECK">
<match url="^[^/]*$" />
<conditions>
<add input="{DOCUMENT_ROOT}\{R:0}" matchType="IsFile" />
<!-- allowed extensions -->
<add input="{REQUEST_FILENAME}" pattern="\.asp$" negate="true" />
<add input="{REQUEST_FILENAME}" pattern="\.allowed1$" negate="true" />
<add input="{REQUEST_FILENAME}" pattern="\.allowed2$" negate="true" />
<!-- allowed extensions -->
</conditions>
<action type="CustomResponse" statusCode="404" statusReason="Not Found" statusDescription="." />
</rule>
</rules>
</rewrite>
</system.webServer>
</configuration>
,并放置在要阻止对文件的访问每个子目录下面web.config
。这一个删除静态文件处理程序,使该目录中的静态文件变得不可访问。
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<handlers>
<remove name="StaticFile" />
</handlers>
</system.webServer>
</configuration>
感谢@库尔 - TIGIN。但是,我得到错误代码0x8007000d 500.19错误。请注意,这是经典的asp。经典的ASP识别web.config文件? – amindomeniko
@amindomeniko web.config是关于IIS7 +的,所以它不重要的asp或asp.net甚至php。 '500.19'表示你的web.config文件无效。如果没有最后一个'web.config'就很难说清楚,用你当前的'web.config'来更新这个问题。 –
之前没有web.config。尽管如此,当我在IIS中使用规则重写UI创建规则时,问题就解决了。任何想法为什么这个webconfig返回一个错误? – amindomeniko