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

WordPress插件开发:创建隐藏真实路径的文件下载脚本

WordPress插件实现隐藏真实路径的文件下载

实现步骤

1. 在插件主文件中添加下载处理逻辑

直接在你的插件主PHP文件中插入以下代码,用于注册路由、接收请求并处理下载:

// 允许WordPress识别fn查询参数
add_filter('query_vars', function($vars) {
    $vars[] = 'fn';
    return $vars;
});

// 注册/download路由规则
add_action('init', function() {
    add_rewrite_rule('^download/?$', 'index.php?fn=$matches[1]', 'top');
});

// 处理下载请求
add_action('template_redirect', function() {
    $filename = get_query_var('fn');
    if (!$filename) {
        wp_die('无效请求');
    }

    // 定义受限文件夹的真实物理路径
    // 可根据实际情况调整,比如用插件目录路径:plugin_dir_path(__FILE__) . 'restricted-dir/'
    $restricted_dir = ABSPATH . 'restricted-dir/';
    $file_path = $restricted_dir . basename($filename);

    // 安全校验:文件存在且可读
    if (!file_exists($file_path) || !is_readable($file_path)) {
        wp_die('文件不存在或无法访问');
    }

    // 输出HTTP下载头
    header('Content-Type: application/octet-stream');
    header('Content-Disposition: attachment; filename="' . basename($file_path) . '"');
    header('Content-Length: ' . filesize($file_path));

    // 输出文件内容并终止程序
    readfile($file_path);
    exit;
});

2. 刷新固定链接规则

登录WordPress后台,进入「设置」→「固定链接」,随意选择一个链接结构并保存,让新的路由规则生效。

3. 前端使用下载链接

直接使用你提供的HTML链接即可,也可以用WordPress内置函数生成更安全的链接:

<!-- 纯HTML链接 -->
<a href="/download?fn=filename.ext">Download my file</a>
// WordPress模板/插件中生成安全链接
echo '<a href="' . esc_url(home_url('/download?fn=' . urlencode('filename.ext'))) . '">Download my file</a>';

关键安全提示

  • 防止路径遍历攻击:用basename($filename)过滤文件名,避免用户输入../../wp-config.php这类恶意路径
  • 权限控制:如果需要限制下载权限,可在处理函数开头添加校验,比如:
    if (!is_user_logged_in()) {
        wp_die('请登录后下载');
    }
    
  • 文件类型限制:只允许下载指定类型的文件,避免安全风险:
    $allowed_exts = ['pdf', 'zip', 'ext'];
    $file_ext = strtolower(pathinfo($file_path, PATHINFO_EXTENSION));
    if (!in_array($file_ext, $allowed_exts)) {
        wp_die('不允许下载该类型文件');
    }
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 05:17:09