# 为网站设置密码保护

Source: https://support.kapsulehost.com/zh-cn/site-password-protect

密码保护会在您的整个网站或特定路径前方加上浏览器登录提示，这是保护预上线网站、暂存副本或管理区域隐私的最简单方式。本指南将介绍如何设置密码保护、管理用户、验证其是否生效以及如何将其移除。

## 密码保护功能在 KPanel 中的位置

1. 登录 [KPanel](https://kpanel.kapsulehost.com)。
2. 点击左侧边栏中的**网站**，然后点击相应网站。
3. 在该网站的左侧菜单中，打开**设置**，再打开**密码保护**。

直接访问地址为 `/websites/<site-id>/password-protect`。

![KPanel 中网站的密码保护](https://support.kapsulehost.com/help/screenshots/site-password-protect.b85dc769.webp)

## 工作原理

密码保护由网络服务器通过 HTTP Basic Auth 方式应用，在您的应用程序运行之前生效。访问受保护 URL 的访客将看到浏览器自带的登录对话框，在完成身份验证之前，无法看到任何内容，也无法访问任何应用程序代码。

由于密码保护位于所有内容之前，它同样会保护同一路径下的资源文件、上传内容和 API 端点，而不仅仅是渲染后的页面。它还会完全阻挡搜索引擎抓取工具，这正是预上线网站所需要的效果。

## 选择要保护的内容

点击**添加保护**后，第一个问题是保护范围，这里有两种选择。

**保护整个网站。** 访问该域名的任何人，包括根目录、管理区域等所有内容，都会看到登录提示。对于尚未上线的网站、暂存副本，或任何完全不应公开可读的内容，这是正确的选择。

**保护特定路径。** 锁定某个子路径，网站的其余部分保持公开。该路径下的所有内容都会被包含在内，因此保护 `/admin` 也会涵盖 `/admin/users`。

您可以在同一个网站上创建多个保护规则，每个规则覆盖不同的路径，并设置不同的用户。

## 设置步骤

1. 点击**添加保护**。
2. 选择**保护整个网站**或**保护特定路径**。如果是路径，请以斜杠开头输入，例如 `/admin`。
3. 设置**提示标签**。这是浏览器登录对话框中显示的文字，最多 64 个字符，默认值为**受限区域**。使用诸如网站名称之类容易辨识的内容，有助于访客确认该提示是真实的，而非钓鱼攻击。
4. 至少添加一个用户，包含用户名和至少 8 个字符的密码。
5. 对每个需要访问权限的额外人员，点击**添加用户**。
6. 点击**应用保护**。

该规则会先被应用，随后直接针对您的网站进行检查，因此之后显示的状态反映的是真实行为。

> **Warning:** 每次请求都会发送 Basic Auth 凭据。在 HTTPS 下，这些凭据在传输过程中是加密的，足以用于限制暂存网站或内部区域的访问。但这并非身份识别系统：没有按用户划分的审计记录，没有会话机制，没有密码重置流程，也没有失败尝试后的锁定机制。请勿用它来保护任何真正敏感的内容，也切勿重复使用您的团队在其他地方使用的密码。

## 管理用户

点击某个现有保护规则的编辑按钮，即可更改用户列表。

- **添加用户：** 点击**添加用户**，然后输入用户名和密码。
- **更改密码：** 在该用户的密码字段中输入新密码。
- **保留密码：** 将字段留空。现有用户会显示一个占位提示，表明密码未发生变化。
- **移除用户：** 点击该行的移除按钮。

密码永远不会重新显示给您查看。如果有人忘记了密码，请为其设置新密码并告知对方。

现有保护规则的保护范围无法更改。若要将保护规则从一个路径移动到另一个路径，请先移除该规则，再新建一个。

## 验证是否生效

每个保护规则都会显示一个状态徽章：

| 徽章 | 含义 |
|---|---|
| 尚未验证 | 检查尚未运行，请稍等片刻后刷新 |
| 保护已验证生效 (401) | 我们从外部请求了该 URL，并收到了真实的登录质询 |
| 已应用但未发出质询，并附带状态码 | 规则已写入，但网站返回了其他内容 |

中间这个徽章才是您想要看到的结果。它表示一次外部请求确实收到了质询，而不仅仅是配置文件已被写入。

每一行还有一个**测试**按钮，点击后会在新标签页中打开受保护的 URL，让您亲自查看提示内容。请在隐私浏览窗口中进行测试：一旦您登录过，浏览器会持续发送凭据，网站在您看来会显得是开放的。

如果保存后看到警告，提示服务器上的另一个配置也声明了相同的域名，则在该冲突解决之前，保护规则不会生效。该消息会指出另一个配置的名称。如不确定，请联系支持团队。

## 移除保护

点击某个保护规则的移除按钮并确认。确认提示会明确说明后果：登录提示将被移除，该路径或整个网站将对任何人开放。

移除后，面板会重新检查网站。如果尚无法确认网站已经开放，它会提示您等待约 30 秒后刷新，而不会在尚未观察到结果的情况下声称操作已成功。

> **Important:** 移除整站保护会立即将网站发布到整个互联网上，包括被搜索引擎收录。在上线当天执行此操作之前，请确保内容确实已经准备就绪：正确的页面已发布、测试内容已移除、任何占位定价信息已更正。

## 常见用途

**预上线阶段。** 在构建网站期间保护整个网站，上线时再移除保护。这比"即将上线"插件更可靠，因为它还能隐藏您的管理区域、上传内容和暂存数据。

**暂存环境。** 一个可公开读取的暂存副本会带来重复内容问题和数据泄露风险。请对其加以保护，并保持该保护状态。请参阅[暂存环境](https://support.kapsulehost.com/zh-cn/staging-environments)。

**非 WordPress 网站的管理区域。** 对于带有 `/admin` 路径的静态网站或自定义应用程序，这相当于在应用程序已有的机制之前再加上一道锁。

**客户审阅网站。** 为客户提供一个用户名和密码，提示标签会告知他们正在登录的是什么内容。

## 疑难排解

**我看到了登录提示，但密码被拒绝。** 请确认用户名前后没有多余空格，并通过编辑对话框重新设置密码。密码必须至少为 8 个字符。

**在我看来网站是开放的，但对其他人来说是受保护的。** 您的浏览器已缓存了凭据，请在隐私浏览窗口中进行测试。

**正常运行时间监控现在报告网站处于离线状态。** 在整站保护开启时属于预期现象：检测程序收到的是 401 状态。请参阅[网站正常运行时间监控](https://support.kapsulehost.com/zh-cn/site-uptime-monitoring)，其中的事件原因会显示 401 状态码。

**我的页面被搜索引擎移除了。** 在保护开启期间同样属于预期现象。移除保护、网站恢复可抓取状态后，页面会重新出现。

**徽章显示已应用但未发出质询。** 说明在规则生效之前，已有其他内容做出了响应。请记下显示的状态码，检查该路径上是否有重定向先一步捕获了请求，并参阅[网站重定向](https://support.kapsulehost.com/zh-cn/site-redirects)。

**我无法移除保护。** 移除操作需要网站写入权限。使用只读角色时，相关按钮会处于禁用状态。

## 相关页面

- [网站安全](https://support.kapsulehost.com/zh-cn/site-security)：了解证书、恶意软件扫描、IP 封锁和登录强化等内容。
- [网站的国家/地区封锁](https://support.kapsulehost.com/zh-cn/site-geo-blocking)：改为按访客所在国家/地区限制访问。
- [自定义错误页面](https://support.kapsulehost.com/zh-cn/site-error-pages)：为访客看到的 401 页面添加品牌样式。
