IIS 10默认文档功能失效:访问根路径无法跳转至index.html返回404.0求助
解决IIS 10默认文档无法跳转至index.html的问题
嘿,我帮你排查下这个IIS默认文档的问题——从你的描述和给出的web.config配置来看,问题根源出在Handlers节点的配置错误上,这直接导致DefaultDocument模块没法正常工作:
- 你配置的
Static Filehandler用了requireAccess="Script",这会让静态文件(比如index.html)需要脚本权限才能访问,但默认文档跳转时的请求根本不符合这个权限要求,直接被拦截了; DefaultDocumenthandler设置了resourceType="File",可用户访问/的时候,这并不是一个具体的文件请求,而是目录请求,这个配置会让handler忽略这类请求,自然没法触发跳转。
修复方案
把你的web.config里的Handlers配置改成下面这样,同时保留原有的默认文档配置:
完整的web.config关键部分示例
<defaultDocument enabled="true"> <files> <clear /> <add value="index.html" /> </files> </defaultDocument> <handlers> <clear /> <!-- 先清空默认handler,避免和服务器级配置冲突 --> <add name="StaticFile" path="*" verb="*" modules="StaticFileModule,DefaultDocumentModule,DirectoryListingModule" resourceType="Either" requireAccess="Read" /> <add name="DefaultDocument" path="*" verb="*" modules="DefaultDocumentModule" resourceType="Directory" /> </handlers>
关键调整说明
- 把
Static File的requireAccess从Script改成Read:静态文件只需要读取权限就够了,脚本权限是给ASP.NET这类动态文件用的,之前的设置完全是画蛇添足,反而拦住了默认跳转; DefaultDocument的resourceType改为Directory:当用户访问站点根路径/时,IIS会把它当作目录请求来触发默认文档机制,原来的File类型会让这个handler直接跳过这类请求,自然没法帮你跳转到index.html;- 加上
<clear />:避免继承IIS服务器级别的handler配置,防止新旧配置冲突导致奇怪的问题。
额外要检查的点
- 确认index.html确实在站点根目录里,而且IIS应用池的身份对这个文件有读取权限;
- 可以重启下IIS站点或者应用池,确保新配置生效;
- 如果不需要目录浏览功能,关掉也没关系,不影响默认文档的正常工作。
内容的提问来源于stack exchange,提问作者Tim Williams
相关产品推荐
相关产品推荐

