使用MAMP托管Drupal站点时CSS无法加载的MIME类型错误
解决MAMP托管Drupal站点时CSS无法加载的问题
我之前在MAMP上部署Drupal站点时,也碰到过完全一样的情况——HTML内容正常显示,但所有CSS都加载失败,浏览器报MIME类型不匹配的错误。结合我的排查经验,给你几个亲测有效的解决方向:
1. 检查sites/default/files目录的权限
Drupal生成的聚合CSS文件存在sites/default/files/css目录下,如果权限不对,MAMP的Apache进程没法读取或生成这些文件,就会导致请求返回404(也就是text/html类型的错误页面)。
- 打开终端,切换到你的Drupal站点根目录,执行以下命令:
(MAMP的Apache默认运行用户是chmod -R 755 sites/default/files chown -R _www:_www sites/default/files_www,如果你的配置有改动,换成对应的用户和用户组即可)
2. 确认MAMP的URL重写(mod_rewrite)已启用
Drupal的干净URL依赖mod_rewrite模块,如果这个模块没开启,静态文件的请求可能被错误路由到Drupal的入口文件(index.php),最终返回HTML而非CSS文件。
- 打开MAMP,点击顶部菜单栏的
Preferences→ 切换到Apache标签页 → 点击Open httpd.conf按钮; - 在打开的配置文件中,找到这行代码:
去掉前面的#LoadModule rewrite_module modules/mod_rewrite.so#注释,改成:LoadModule rewrite_module modules/mod_rewrite.so - 保存文件后,重启MAMP的Apache服务。
3. 检查Drupal根目录的.htaccess文件配置
确保站点根目录的.htaccess文件是Drupal默认版本,没有被误修改。特别是下面这段处理静态文件的规则必须存在:
# Pass all requests not referring directly to files in the filesystem to # index.php. Clean URLs are handled in drupal_environment_initialize(). RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_URI} !=/favicon.ico RewriteRule ^ index.php [L]
这段规则的作用是:如果请求的是服务器上真实存在的文件(比如CSS、图片),就直接返回文件内容;否则才路由到index.php处理动态请求。如果这段规则被删除或修改,CSS请求就会被当成动态请求处理,返回HTML错误页面。
4. 临时禁用CSS聚合(排查用)
如果上面的方法都没解决问题,可以先临时禁用CSS聚合,看看原始CSS文件能不能正常加载:
- 登录Drupal后台,进入
配置→性能页面; - 取消勾选
聚合和压缩CSS文件选项,点击保存配置; - 刷新前端页面,如果原始CSS能正常加载,说明问题出在聚合文件的生成或读取环节,回到第一步重新检查目录权限。
5. 清理Drupal缓存
有时候旧的缓存记录会导致错误的请求路径被保留,清理缓存试试:
- 后台进入
配置→性能→ 点击清空所有缓存按钮; - 或者直接手动删除
sites/default/files/php和sites/default/files/css目录下的所有文件,让Drupal重新生成聚合文件。
补充说明:浏览器提示的MIME类型错误本质是——请求CSS文件时,服务器返回的不是
text/css类型的内容,而是404错误页面(text/html类型),所以核心是要让服务器正确识别并返回CSS文件本身。
内容的提问来源于stack exchange,提问作者helloworld123
相关产品推荐
相关产品推荐

