在IIS上部署Django Web应用出现403.14禁止访问错误如何解决
问题解决方案
这个报错和IIS默认文档配置无关,Django采用动态路由机制,所有请求都需要转发给WSGI处理程序解析,不需要依赖IIS的静态默认文档规则。你遇到的403.14错误是因为FastCGI处理规则配置错误,导致根路径请求没有被转发到Django,触发了IIS的目录访问校验。
第一步:修正web.config配置
直接替换为以下正确配置:
<?xml version="1.0" encoding="UTF-8"?> <configuration> <system.webServer> <handlers> <!-- 修正path参数,原配置多了反斜杠,导致所有请求没有被正确匹配到FastCGI处理 --> <add name="Python FastCGI" path="*" verb="*" modules="FastCGIModule" scriptProcessor="c:\python38\python.exe|c:\python38\lib\site-packages\wfastcgi.py" resourceType="Unspecified" requireAccess="Script" /> </handlers> <!-- 移除多余的defaultDocument配置,Django动态路由不需要IIS默认文档 --> <directoryBrowse enabled="false" /> </system.webServer> <appSettings> <add key="PYTHONPATH" value="C:\inetpub\wwwroot\CED_HRAP" /> <add key="WSGI_HANDLER" value="CED_HRAP.wsgi.application" /> <add key="DJANGO_SETTINGS_MODULE" value="CED_HRAP.settings" /> </appSettings> </configuration>
第二步:完成必要校验项
- 以管理员身份启动命令提示符,执行
wfastcgi-enable命令,确认返回的FastCGI路径和web.config中scriptProcessor参数的路径完全一致。 - 给项目目录
C:\inetpub\wwwroot\CED_HRAP添加IIS访问权限:右键文件夹→属性→安全→编辑→添加,添加IUSR和你的站点对应应用池用户,授予「读取 & 执行」「列出文件夹内容」「读取」权限。 - 打开Django配置文件
C:\inetpub\wwwroot\CED_HRAP\CED_HRAP\settings.py,确认ALLOWED_HOSTS参数已经添加了你访问站点使用的域名、IP地址,例如ALLOWED_HOSTS = ['127.0.0.1', '你的站点域名']。 - 如果需要IIS处理Django静态资源,先运行
python manage.py collectstatic收集静态文件,再在IIS中给站点添加名为static的虚拟目录,指向收集后的静态文件存放路径即可。
内容的提问来源于stack exchange,提问作者psolomon
相关产品推荐
相关产品推荐

