phpEnv防盗链本质是Apache配置,需启用mod_rewrite、设AllowOverride All,并在.htaccess中用RewriteCond校验Referer,允许空来源及指定域名访问图片等资源。
php
Env 默认不带 Nginx,它用的是 Apache —— 所以你根本配不了 Nginx 防盗链。强行找
或在 phpEnv 里“切换服务器”是白忙活。
确认你用的真是 Nginx?
phpEnv 是 Windows 下的 Apache + PHP + MySQL 集成环境,界面里看到的“Nginx”选项通常是误导性标签或第三方插件,实际进程里跑的仍是
。验证方法很简单:
打开任务管理器 → 查看“后台进程”,找有没有
;没有,就说明没在跑 Nginx
打开 phpEnv 控制面板 → 点“服务状态”,Apache 显示“运行中”,Nginx 显示“未安装”或“已禁用”
访问
页面底部,通常会写明 Server: Apache/2.x.x
Apache 下正确配防盗链的三步关键操作
既然底层是 Apache,就得按 Apache 的路子来:启用模块、放开权限、写规则。缺一不可,否则
就是废纸。
编辑
,取消注释这行:
找到你网站目录对应的
块,把里面的
改成
在网站根目录(如
)新建文件
,用记事本“另存为”,编码选
UTF-8 无 BOM
,文件名必须带英文点
规则里最容易错的几个点
网上抄来的规则常直接报 500 或完全不生效,问题多出在细节上:
PHP 8.5.5
PHP 8.5.5 是 PHP 8.5 分支的维护更新版本。该版本延续了“小步快跑”的迭代逻辑,通过深度错误修复、底层性能微调以及安全加固,旨在为开发者提供一个更健壮、更高效的运行环境。该版本严格遵守语义化版本规范,不包含破坏性变更。
下载
立即学习
“
PHP免费学习笔记(深入)
”;
中的
必须和你在 phpEnv 里实际配置的本地域名一致(比如
),不能留空或写
—— 浏览器同源策略会让
和
被视为不同源
别漏掉
,否则直接在地址栏输图片 URL 会 403,连本地调试都做不了
的
是返回 403,不是
(后者语法错误,Apache 启动失败)
规则只对静态文件生效,
文件、
接口不受影响,别指望它拦住 curl 调用接口盗图
真正难搞的从来不是写几行规则,而是 Apache 配置里那个
默认关着,又没人告诉你得手动开 —— 这一步跳过,后面全白搭。
nginx.confhttpd.exenginx.exehttp://127.0.0.1.htaccessApache/conf/httpd.confLoadModule rewrite_module modules/mod_rewrite.soAllowOverride NoneAllowOverride AllD:/phpEnv/www.htaccess.htaccessRewriteCond %{HTTP_REFERER} !^https?://(www\.)?yourdomain\.local [NC]yourdomain\.localtest.devlocalhosthttp://localhosthttp://test.devRewriteCond %{HTTP_REFERER} !^$RewriteRule \.(jpg|jpeg|png|gif)$ - [F][F][R=403].php/api/AllowOverride