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

WordPress站点点击docx文件直接打开而非下载问题如何解决

问题原因
  • 核心诱因是共享主机的OpenLiteSpeed服务未配置.docx后缀对应的正确MIME类型,默认将docx格式的二进制文件识别为text/plain纯文本类型,浏览器收到响应后不会触发下载逻辑,直接将二进制内容当做纯文本渲染,就会出现乱码问题。
  • 你本地VM的Almalinux环境默认内置了正确的MIME类型映射规则,因此docx下载功能正常。
  • 你提供的WordPress默认重写规则无异常,规则中已配置真实存在的文件不会走WP路由逻辑,因此和重写规则无关。
解决方案

根据你共享主机的权限不同,可选择以下任意一种方法处理:

  1. 修改站点根目录.htaccess文件(优先推荐)
    OpenLiteSpeed默认支持解析.htaccess规则,直接在你现有重写规则下方添加以下配置即可:
    首先尝试添加正确的MIME类型映射:
<IfModule mod_mime.c>
AddType application/vnd.openxmlformats-officedocument.wordprocessingml.document .docx
</IfModule>

如果添加后仍未生效,可直接强制配置docx文件走下载逻辑:

<FilesMatch "\.(docx)$">
Header set Content-Disposition "attachment"
</IfModule>

修改完成后重载OpenLiteSpeed站点配置,清理浏览器缓存后即可测试生效。
2. 主机面板配置MIME类型
如果共享主机不允许自定义.htaccess规则,可登录主机控制面板找到「MIME类型配置」功能,手动添加.docx后缀对应的MIME值为application/vnd.openxmlformats-officedocument.wordprocessingml.document,保存后生效。
3. WordPress层面兼容处理
如果上述服务端配置都无权限操作,可将以下代码添加到当前激活主题的functions.php文件中,通过WP动态输出正确的响应头:

function custom_docx_download_header() {
    if (is_404()) {
        $requested_file = $_SERVER['REQUEST_URI'];
        if (preg_match('/\.docx$/', $requested_file) && file_exists(ABSPATH . ltrim($requested_file, '/'))) {
            header('Content-Type: application/vnd.openxmlformats-officedocument.wordprocessingml.document');
            header('Content-Disposition: attachment; filename="' . basename($requested_file) . '"');
            readfile(ABSPATH . ltrim($requested_file, '/'));
            exit;
        }
    }
}
add_action('template_redirect', 'custom_docx_download_header');

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 06:36:03