- ```html
IIS 6 里想直接通过浏览器访问一个文件,加访件比如
readme.txt或者data.zip,问文光把文件丢进网站根目录还不够。加访件默认情况下,问文IIS 只认它认识的加访件扩展名,像 .htm、问文.asp、加访件.jpg 这些。问文你放个 .log 或者 .ini 进去,加访件请求过去就是问文 404——不是文件不存在,是加访件 IIS 压根没把它当“可访问资源”处理。我见过不少人卡在这一步,问文以为权限没给对,加访件反复折腾 NTFS 权限。问文其实问题在 IIS 的加访件 MIME 类型映射。IIS 6 的判断逻辑很简单:客户端请求某个扩展名,它先查 MIME 映射表,有对应类型就返回文件内容,没有就返回 404。所以要让一个冷门后缀能被下载或查看,必须手动加一条映射。
操作路径不复杂。打开 IIS 管理器,找到目标网站,右键属性。切到“HTTP 头”选项卡,右下角有个“MIME 类型”按钮。点进去,你会看到已经存在的映射列表。点“新建”,在扩展名框里填
.log(注意带点),MIME 类型填text/plain。确定,再确定。重启一下 IIS 或者等几秒,浏览器刷新,文件就能访问了。这里有个细节容易踩坑:扩展名必须带前导点。有人只写
log,IIS 不认,照样 404。MIME 类型写错也不行,比如把二进制文件标成text/html,浏览器可能会尝试渲染乱码而不是下载。不确定类型时,通用做法是application/octet-stream,强制下载。如果你要开放的文件类型很多,比如日志目录下有 .log、.txt、.csv、.json,一个个加太慢。可以直接改元数据库。IIS 6 的 MIME 映射存在
MimeMap节点里。用adsutil.vbs脚本批量加,比图形界面快得多。命令大概长这样:cscript adsutil.vbs set W3SVC/1/Root/MimeMap ".log,text/plain"注意路径里的
W3SVC/1是网站 ID,你得换成自己的。改完记得iisreset。这招适合运维批量部署,但手滑写错路径会把整个站点的 MIME 配置搞乱,操作前备份元数据库。还有个隐蔽问题:IIS 6 有“请求筛选”吗?没有。那是 IIS 7 以后才有的模块。IIS 6 时代,文件能不能访问主要看 MIME 映射和 NTFS 权限。但如果你装了 URLScan 之类的 ISAPI 筛选器,它可能会拦截特定扩展名。比如默认规则里 .ini、.log 有时被禁。这时候光加 MIME 没用,得去改 URLScan.ini 的
[DenyExtensions]段。我自己的习惯是:临时调试就图形界面加一条,长期开放就用脚本写进部署流程。另外别把敏感文件放在网站目录下再靠 MIME 控制——那玩意不是访问控制。真要限制,用 NTFS 权限或者 IP 限制。MIME 只解决“IIS 愿不愿意把这个后缀吐给客户端”的问题,不解决“谁有资格拿”。
最后说个真实案例。之前帮人配一个内部文件服务器,IIS 6 上放了一堆 .patch 文件给测试机下载。加完 MIME 后本机访问正常,但其他机器 404。查了半天,发现是客户端代理缓存了之前的 404 响应。清掉代理缓存或者换个没访问过的客户端立马就好。这种问题跟 IIS 配置无关,但特别容易让人怀疑自己刚加的 MIME 没生效。
所以,IIS 6 添加访问文件的核心就两步:加 MIME 映射,确认没有筛选器拦截。做完拿
``` 顶: 9踩: 4curl -I看返回头,比浏览器刷新靠谱。






评论专区