如何在OpenLiteSpeed服务器的WordPress中通过PHP脚本重定向PDF GET请求
问题原因
OpenLiteSpeed 默认对 pdf 等静态资源有优先级更高的直接返回逻辑,会跳过 .htaccess 重写规则执行,这是你本地 Apache 配置正常、线上规则不生效的核心原因。
分步解决方法
开启站点
.htaccess读取权限
登录 OpenLiteSpeed WebAdmin 控制台(默认端口 7080),进入对应站点的配置页,切换到「重写」选项卡,将「启用重写」和「读取.htaccess」两个选项都设置为「是」,保存配置。调整
.htaccess规则
将你原有的重写规则替换为如下内容,放在.htaccess文件最顶部,优先级高于 WordPress 默认规则:
<IfModule mod_rewrite.c> RewriteEngine On RewriteRule ^wp-content/uploads/scopes/unlocked-scopes/(.*)$ /wp-content/uploads/dl-file.php?file=$1 [QSA,L] </IfModule>
移除冗余的 RewriteCond 规则,路径前加斜杠保证根目录匹配,适配 OpenLiteSpeed 的重写匹配逻辑。
- 禁用目标目录的静态资源直接返回
这是必须配置的核心步骤:
- 回到站点配置页,切换到「上下文」选项卡,新增一个「静态上下文」
- 路径填写
/wp-content/uploads/scopes/unlocked-scopes/ - 位置填写该目录在服务器上的绝对路径
- 将「可访问」选项设置为「否」,保存配置
配置完成后平滑重启 OpenLiteSpeed 服务生效。
- 可选安全优化
建议在你现有的 PHP 校验逻辑中增加后缀白名单校验,避免目录遍历风险:
// 拼接 $file 变量之前新增如下逻辑 if (pathinfo($_GET["file"], PATHINFO_EXTENSION) !== 'pdf') { manage_action(); }
内容的提问来源于stack exchange,提问作者bhanu
相关产品推荐
相关产品推荐

