IIS: 如何提供没有扩展名的文件?

我使用 IIS 8Windows 8.1。我有一个 XML文件,我需要有它通过 (servername)/(path)访问

(path) 是由其他人预定义的,不包含扩展名。我尝试了简单的解决方案。Xml 文件的文件名,但是 IIS returns HTTP Error 404.3 - Not Found

在返回的 “物理路径”错误是正确的文件路径,当我复制粘贴到 Run 打开正确的文件。

如果可能的话,请告诉我。

74522 次浏览

假设(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是该网站下的目录。

它也可以在 IIS6中完成/不使用 web.config,但是在这里使用管理 GUI 为扩展 .添加 MIME 类型:

enter image description here

例如,为了服务于 .well-known/acme-challenge令牌,创建一个名为 .well-known的虚拟目录,并让它从物理目录中获取其内容(物理目录不能在窗口中使用带有前导点的名称)。然后,在这个目录中为扩展 .添加一个 text/plain MIME 类型,您就可以为当前由旧 IIS 服务的域手动获取新的 letsencrypt证书。

手动更改配置可能容易出错。因此,Internet Information Server (IIS)控制台 GUI 为更新 MIME 类型提供了一种更简单、无错误的方法。请按照以下步骤:

  1. 打开 IIS

  2. 在左侧导航窗格中展开网站的节点。

  3. 选择应用程序或虚拟目录。

  4. 双击右窗格中 IIS部分下的 MIME 类型特性:

    enter image description here

  5. 单击 行动面板中的 Add..链接。设置哑剧类型以支持所有不带扩展名的文件。然后单击 OK:

    enter image description here

在幕后,这些步骤按照 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>