You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

部署在IIS上的Django项目静态文件无法加载,求配置修改方案

解决IIS部署Django时静态文件加载失败的问题

一、调整web.config,让IIS优先处理静态文件

你的当前配置把所有请求都交给FastCGI处理,包括静态资源,这是核心问题。需要修改handler规则,让IIS先接管静态文件请求:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <appSettings>
        <add key="WSGI_HANDLER" value="django.core.wsgi.get_wsgi_application()" />
        <add key="PYTHONPATH" value="C:\inetpub\wwwroot\pax_web_server_app" /> 
        <add key="DJANGO_SETTINGS_MODULE" value="pax_web_server_app.settings" />
    </appSettings>

    <system.webServer>
        <handlers>
            <!-- 优先处理static目录下的请求,用IIS静态文件模块直接返回 -->
            <add name="StaticFiles" path="static/*" verb="*" modules="StaticFileModule,DefaultDocumentModule,DirectoryListingModule" resourceType="Either" requireAccess="Read" />
            <!-- 剩余请求再交给Django的FastCGI处理 -->
            <add name="paxsite" path="*" verb="*" modules="FastCgiModule" scriptProcessor="C:\Python311\python.exe|C:\Python311\Lib\site-packages\wfastcgi.py" resourceType="Unspecified" />
        </handlers>
        <staticContent>
            <!-- 补全常见静态文件的MIME类型,避免浏览器无法识别 -->
            <mimeMap fileExtension=".css" mimeType="text/css" />
            <mimeMap fileExtension=".js" mimeType="application/javascript" />
            <mimeMap fileExtension=".png" mimeType="image/png" />
            <mimeMap fileExtension=".jpg" mimeType="image/jpeg" />
            <mimeMap fileExtension=".gif" mimeType="image/gif" />
            <!-- 修正原错误的.tab文件MIME类型,根据实际文件类型调整 -->
            <mimeMap fileExtension=".tab" mimeType="text/plain" />
        </staticContent>
    </system.webServer>
</configuration>

关键修改点

  • 新增StaticFiles handler,优先级高于Django的FastCGI规则,确保static/*路径的请求直接由IIS处理,不走WSGI流程。
  • 修复原配置中错误的.tab MIME类型,同时补全CSS、JS、图片等常用静态资源的MIME映射,避免因类型不匹配导致加载失败。

二、确认Django静态文件的配置与收集

  1. 检查项目settings.py中的静态文件配置:
# settings.py
STATIC_URL = '/static/'
# 指定静态文件收集后的存放目录,必须与项目目录对应
STATIC_ROOT = os.path.join(BASE_DIR, 'static')
  1. 执行静态文件收集命令:
    打开命令行切换到项目根目录,运行:
python manage.py collectstatic

该命令会将所有Django应用、第三方库中的静态文件统一复制到STATIC_ROOT指定的static文件夹,确保IIS能访问到完整的静态资源。

三、IIS站点权限与功能检查

  • 确保IIS应用程序池的身份对static目录拥有读取权限,否则IIS无法读取静态文件。
  • 检查服务器是否已安装IIS的静态内容功能(可在服务器管理器的角色功能中查看,未安装则需添加)。
  • 若静态文件不在项目根目录,需在IIS站点中添加虚拟目录指向实际路径,并同步修改settings.py中的STATIC_URL和STATIC_ROOT。

内容的提问来源于stack exchange,提问作者Ufuk Sipor

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.02 00:35:31