WordPress私密网站怎么做?4种方法让陌生人进不来
本站部分链接为联盟推广链接。通过这些链接购买,我可能获得佣金...
这不仅不会增加您的实际费用,通常还能让您享受到专属折扣。所有上榜推荐均基于真实项目环境下的自费实测,排名完全由客观测评数据决定。详细规则请查阅《免责声明》。
网站刚装好主题,首页还挂着示例文字,产品页一半是空的。这时候域名已经解析出去了,谁都能打开。更尴尬的是 Google 爬虫不挑食,半成品页面照样抓。等你正式上线,搜索结果里躺着的可能还是那几张 Lorem ipsum 截图。
所以网站没准备好之前,最稳的做法是先把门锁上。问题是 WordPress 的「锁」有好几种,锁的位置不一样,效果差得也挺远。这篇我按「锁多大范围、锁得多死」把 4 种常用方法捋一遍,你对号入座就行。
你要锁整站,还是只锁几篇内容?
这一步想错了,后面装什么插件都是白折腾。
WordPress 官方文档说得很直白:隐藏整个网站不是核心自带功能,要靠插件或者服务器配置。单篇文章、单个页面就简单多了,编辑器里原生就能设成私密或加密码。
拿常见场景对一下:
- 网站开发中,只想给客户预览,这是整站锁。
- 家庭相册、班级博客、公司内部知识库,也是整站锁,而且访客要长期登录。
- 公开的外贸展示站里,有几页报价单只给老客户看,这是单页锁。
还有一种情况,网站压根只有你自己看,比如练手、测主题。说实话这种连服务器都不用开,用 LocalWP 在电脑上搭本地站更省事。不花钱,改坏了也没人看见。
方法一:WordPress 自带的「私密」和「密码保护」
这个方法只锁单篇内容,但零插件,适合偶尔藏一两页的情况。
打开要处理的文章或页面,看右侧边栏的文章设置面板。找到状态(或可见性)那一项,默认是「公开」,点开后有两个选项:
- 私密:只有管理员和编辑能看到,普通访客连文章列表里都看不到这篇。就算有人猜中 URL,打开也是 404。
- 密码保护:标题照样显示,正文位置变成一个密码框,输对了才能看内容。
选好以后点「更新」就生效了。
这里有两个坑我得提一下。
第一个,后台所有编辑和管理员看私密、加密内容都不需要密码,还能直接改成公开。团队里管理员一多,这层「私密」其实挺薄的。
第二个更隐蔽:文章里插的图片存在 /wp-content/uploads/ 下面,图片地址本身是公开的。文章锁了,图片 URL 发出去照样能打开。
如果你要的是「一个密码锁全站」,或者「文章前半段公开、后半段加密」,原生功能就不够用了。这类需求我之前专门写过 3 款密码保护插件的横向对比,可以直接对照选。
方法二:Force Login,装上即锁,零设置
要锁整站,又希望访客用自己的账号登录(而不是共用一个密码),Force Login 是我觉得最省心的一个。
它在 WordPress.org 上有 30,000+ 活跃安装,评分 4.8,当前版本 5.6.3。它连设置页面都没有,启用就是锁上,停用就是开放。没登录的访客打开任何页面,都会被送到 wp-login.php。登录成功后,它会把人送回原本想看的那个页面,不会一股脑扔回首页。
另外它默认把 REST API 也限制成仅登录用户可用。很多人会漏掉这条通道:页面挡住了,数据却能从 /wp-json/ 被扒走。Force Login 把这条路也堵上了。、
插件下载地址:https://wordpress.org/plugins/wp-force-login/
锁上以后,怎么让客户、家人进来?给他们开账号就行。后台进「用户 → 添加用户」,角色选订阅者。订阅者只能看内容,碰不到后台任何设置。各个角色能干什么、为什么别乱给编辑权限,可以看这篇 WordPress 5 种用户角色的权限区别。
那如果有一两个页面必须公开呢?比如联系页要留给新客户填询盘。Force Login 没有后台开关,只能用一小段代码放行。把下面这段放进子主题的 functions.php,或者 Code Snippets 插件里:
// Force Login 放行指定页面(按页面别名填写)
add_filter( 'v_forcelogin_bypass', function ( $bypass, $visited_url ) {
if ( is_page( array( 'contact', 'landing' ) ) ) {
return true; // 这两个页面不需要登录
}
return $bypass;
}, 10, 2 );
把 contact、landing 换成你自己页面的别名就行。
还有一个和缓存有关的提醒。如果你在 Cloudflare 开了「缓存所有内容」之类的整页缓存,CDN 有可能把某个已登录用户看到的页面缓存下来,再发给没登录的人。Force Login 自己会发送禁止缓存的响应头,但 CDN 规则写得太激进时未必认这个头。锁站期间,CDN 整页缓存最好先关掉。
方法三:My Private Site,要后台开关、要开放注册就选它
Force Login 太「裸」了,有人会觉得心里没底:没有界面,不知道到底开没开。My Private Site 正好相反,什么都在后台点选。
它在 WordPress.org 上有 10,000+ 活跃安装,版本 4.2.3,官方标注测试到 7.1.3,要求 PHP 7.4 以上。
装好启用后,后台左侧会多一个 My Private Site 菜单。进去切到 Site Privacy 标签,勾选 Enable Privacy,保存,整站就锁上了。
如果你用的是 Elementor 页面,或者发现勾上了却没生效,把同一页的 Compatibility Mode 改成 Theme Fix 再试。这是官方给的处理办法。
它比 Force Login 多出来的东西,主要有三块。
一是登录后去哪可以选:回到原页面、首页、仪表盘,或者自定义一个地址。
二是可以开放自助注册。这对内部社区、班级站很方便,还自带一套挡垃圾注册的功能,比如蜜罐字段、可选的 reCAPTCHA,还能拦截一次性邮箱。如果你打算开放注册,顺手把注册体验也优化一下,参考让用户注册时自己设置密码。
三是可以选择屏蔽未登录的 REST API 访问。
不过有几样东西是要钱的。「指定某些页面公开」属于付费扩展 Public Pages,「发临时访问链接」是付费的 Guest Access。另外插件的技术支持已经搬到开发者自己的 ZATZLabs 网站,WordPress.org 论坛上不再回复。
顺带分清一件事:如果你是想让外包或技术人员临时进后台干活,而不是看前台,那是另一码事。用临时免密登录链接更合适,到期自动失效,不用把管理员密码交出去。
My Private Site 官方页面自己也写明了一个局限:媒体文件的直链、网站目录下的非 WordPress 文件(.html、.php),它都管不到。 这条限制其实对方法二同样成立。插件是在 WordPress 加载之后才拦人的,而图片这类静态文件根本不经过 WordPress。
方法四:宝塔面板「加密访问」,连图片一起锁死
要想图片、PDF 也一并锁住,就得把锁往前挪,挪到 Web 服务器(Nginx)这一层。宝塔面板里自带这个功能,原理是 HTTP 基本认证:浏览器在加载网站任何内容之前,先弹一个系统级的用户名密码框,输不对什么都拿不到,WordPress 都还没开始运行。
操作路径大致是:宝塔后台 → 网站 → 点目标站点的「设置」→ 访问限制 → 加密访问 → 添加。名称随便填,加密目录填 / 表示整站,再设一组用户名和密码,保存即可。
设好以后用无痕窗口打开网站,看到的不是网页,而是浏览器自己弹出来的登录框。这是最直观的检验方法。
这把锁最死,代价也最明显。
所有人都得多记一组密码。如果站内还要登录 WordPress,等于要过两道门。Google 爬虫、网站监控服务也全被挡在外面,锁站期间监控报警会一直响,你得心里有数。
WordPress 有些功能会让服务器「自己访问自己」,叫回环请求,站点健康检查、部分定时任务都会用到。基本认证有可能把这类请求也拦下来。所以开启后建议去「工具 → 站点健康」看一眼有没有报错。这一点是我的经验判断,不确定,不同环境表现可能不一样。
用虚拟主机的朋友,cPanel 之类的主机后台一般也有类似的「目录加密」功能,原理相同。还没定主机、想先看看各家后台好不好用的,可以翻一下 WordPress 主机推荐汇总。
四种方法怎么选?一张表对一下
| 方法 | 锁的范围 | 访客怎么进 | 图片直链能锁住吗 | 上手难度 | 最适合 |
|---|---|---|---|---|---|
| 原生私密/密码 | 单篇文章、页面 | 管理员登录或输密码 | 锁不住 | 很低 | 偶尔藏一两页 |
| Force Login | 整站 | 各自账号登录 | 锁不住 | 低(放行页面要写代码) | 开发预览、小团队内部站 |
| My Private Site | 整站 | 各自账号登录,可开放注册 | 锁不住 | 低 | 家庭站、社团、要后台开关的人 |
| 宝塔加密访问 | 整站,含所有文件 | 浏览器弹窗输入共用密码 | 能锁住 | 中 | 资料敏感、个人私密全站封 |
我自己的建议是:开发期或者搭建私密站时,可以用宝塔加密访问整个封死,省得操心图片泄露。上线后如果还有内部资料要藏,再换成插件方案,让每个人用自己的账号登录,谁看过、谁离职,都好管理。
别把「建议搜索引擎不索引」当成私密
很多新手装完 WordPress,会去「设置 → 阅读」勾上「建议搜索引擎不索引本站点」,然后以为网站就藏起来了。
其实不是。这个选项只是给搜索引擎递了张纸条,请它们别收录。守规矩的爬虫会照办,但任何人拿着网址照样能打开你的网站,它对真人访客没有任何拦截作用。
这和 robots.txt 是一个道理:它们管的是「爬虫来不来、收不收录」,不管「人能不能进」。两者具体怎么分工,可以看 robots.txt 和 noindex 到底差在哪。
要真正挡住别人访问,还是得靠上面四种方法里的一种。阅读设置里那个勾,只能算锦上添花。
等网站准备好要公开了,倒着检查一遍:
- 停用私密插件,或者关掉宝塔加密访问。
- 回「设置 → 阅读」把那个勾去掉。很多人就栽在忘了这一步,上线几个月 Google 一页都没收录。
- 用无痕窗口打开几个页面,确认真的能直接访问。
- 去 Google Search Console 重新提交 sitemap。
解锁顺序搞反问题也不大,但第 2 步千万别漏。