我在
IIS 8
上使用 Windows 8.1
。我有一个 XML
文件,我需要通过 (服务器名称)/(路径) 访问它
(path) 由其他人预定义,不包含扩展名。我尝试了删除 .xml 文件的文件名的简单解决方案,但是
IIS returns HTTP Error 404.3 - Not Found
在返回错误的“物理路径”中是正确的文件路径,当我复制粘贴到“运行”时会打开正确的文件。
如果可能,请告诉我。
假设 (path) 是您计算机上的物理目录,请在该目录中创建一个新的 web.config 文件,其中包含以下内容:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<staticContent>
<mimeMap fileExtension="." mimeType="text/xml" />
</staticContent>
</system.webServer>
</configuration>
您告诉 IIS,仅对于此目录,任何没有其他定义的扩展名(在 MIME 类型中)的文件都应被视为 xml 文件。同一路径中的其他文件类型应该仍然有效。
如果您安装了 Windows 功能
IIS Management Scripts and Tools
,您可以使用 PowerShell 创建这样的 web.config 文件:
Add-WebConfigurationProperty -pspath 'MACHINE/WEBROOT/APPHOST/Default Web Site/.well-known' -filter "system.webServer/staticContent" -name "." -value @{fileExtension='.';mimeType='text/xml'}
在此示例中,
Default Web Site
是网站的名称,.well-known
是该网站下的目录。
手动更改配置可能容易出错。因此,Internet Information Server (IIS) 控制台 GUI 提供了一种更简单且无错误的方法来更新 MIME 类型。请按照以下步骤操作:
打开IIS
在左侧导航窗格中展开您的网站节点。
选择您的应用程序或虚拟目录。
双击右窗格中IIS部分下的MIME类型功能:
单击操作窗格中的添加..链接。设置 mime 类型以支持所有不带扩展名的文件。然后点击确定:
在幕后,这些步骤会按照 PeterHahndorf 的帖子中的建议对应用程序或虚拟目录(在您的网站下)的 web.config 文件进行更改。
注意:上述步骤中显示的屏幕截图是从具有 IIS v10 的 Windows 10 计算机上获取的。
对我来说,我只想提供一个文件 所以我所做的只是添加一个简单的重写,因为此处发布的其他方法由于某些原因不起作用
<system.webServer>
<rewrite>
<rules>
<rule name="apple-app-site-association" patternSyntax="ExactMatch">
<match url="apple-app-site-association" />
<action type="Rewrite" url="/apple-app-site-association.txt" />
</rule>
</rules>
</rewrite>
</system.webServer>
以下对我来说适用于 IIS 10 和 Windows 11。
<rewrite>
<rules>
<rule name="Hide .html ext">
<match ignoreCase="true" url="^(.*)"/>
<conditions>
<add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true"/>
<add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true"/>
<add input="{REQUEST_FILENAME}.html" matchType="IsFile"/>
</conditions>
<action type="Rewrite" url="{R:0}.html"/>
</rule>
<rule name="Redirecting .html ext" stopProcessing="true">
<match url="^(.*).html"/>
<conditions logicalGrouping="MatchAny">
<add input="{URL}" pattern="(.*).html"/>
</conditions>
<action type="Redirect" url="{R:1}"/>
</rule>
</rules>