网站功能
从头开始构建,因为显然我需要自己的 CMS。
AlexanderMirvis.com 运行在一个定制的内容管理系统上,该系统专门根据我编写、发布、组织、保护和自动化内容的方式打造。它集成了发布、人工智能、SEO 工具、支付、安全监控、媒体管理、短篇帖子、翻译,以及一些不必要的太空主题视觉效果——自从我添加它们的那一刻起,这些效果就变得必要了。
定制内容管理系统
本网站并不运行在 WordPress 上,而是使用一个定制的 PHP 和 MySQL 内容管理系统,该系统围绕我实际使用的功能设计。页面、出版物、媒体、菜单、SEO 设置、评论、用户、重定向、横幅、翻译、AI 工具、支付和安全控制,都可以通过一个管理界面进行管理。
自己构建 CMS 还意味着我知道代码在哪里、它做什么,以及它为什么存在。如果出现故障,我不必判断问题究竟来自 WordPress、某个主题、37 号插件,还是 37 号插件的紧急兼容插件。
页面与出版物
该 CMS 支持传统的网站页面和长篇出版物。文章可以设置分类、子分类、标签、特色图片、自定义 URL、摘要、SEO 元数据、定时发布、横幅、评论、翻译和付费内容控制。
出版物使用简洁的层级式 URL,并且可以按主题组织,而不必强迫每篇内容都采用相同的结构。发布后,编辑还可以直接打开实时页面,省去了传统上打开三个浏览器标签页,并试图记住哪个标签页包含公开版本的流程。
快速发布
独立的“文章”部分专为较短的想法、链接、新闻、技术笔记和无需成为完整文章的创意而设计。文章最多可包含 500 个单词,并支持照片、可点击链接、主题标签、分享链接卡片、YouTube 视频、时间戳、搜索和定时发布。
可以把它看作我自己的小型社交动态,无需与算法争论别人是否有权看到我发布的内容。
Stripe 付费内容
单独的页面、出版物和快速文章都可以置于 Stripe 付费墙之后。每个项目都可以设置自己的价格,而且我可以通过在内容中插入付费墙分隔符,准确决定免费部分在哪里结束。
访客首先会看到介绍或选定的预览。如果想继续阅读,他们可以通过一次性 Stripe 付款解锁其余内容。当我以管理员身份登录 CMS 时,完整内容仍然对我可见,无需我为自己付费,否则这会是一种非常低效的商业模式。
适合搜索的付费文章
付费文章仍可符合搜索引擎索引条件,同时受限部分对普通访客进行视觉保护。结构化数据会标识页面的付费部分,帮助搜索引擎理解文章包含高级内容,而不是将此限制误解为意外隐藏的文本。
如果我明确不希望某项内容出现在搜索结果中,仍可将其单独标记为 noindex 和 nofollow。
SEO 中心
SEO 中心提供用于管理标题、描述、关键词、规范 URL、索引偏好设置、站点地图生成、重定向、翻译后的 URL 以及其他搜索相关设置的工具。 如有必要,可以单独将页面和出版物排除在搜索引擎之外。
CMS 会自动生成并更新 XML 站点地图,其中包含符合条件的公开内容。出版物、页面、分类、翻译、快速帖子以及受支持的独立公开应用程序,无需每次发生变化时手动编辑 XML 文件,即可被发现并纳入其中。
入站链接和流量分析
SEO 中心会记录实际向网站发送访客的外部引荐 URL。这样便可以查看哪些域名链接到该网站、访客到达了哪些页面,以及这些引荐发生的频率。
还可以将特定 IP 地址、网络范围和引荐域名排除在分析之外。这对于过滤机器人、监控系统、服务器流量以及其他在技术上确实是真实访客、但在了解实际人类流量时并不特别有用的访客十分有用。
OpenAI 与 AI 辅助发布
人工智能被直接集成到 CMS 中,而不是作为独立的复制粘贴工具存在。AI 可以协助写作、内容改进、SEO 分析、元数据处理、 文档处理、翻译以及其他发布任务。
较长的 AI 操作使用可恢复处理,因此大型翻译或 SEO 任务不必在一个巨大的 Web 请求中完成。其目标是让 AI 成为应用程序工作流程的一部分, 而不是把它当作置于 CMS 旁边的聊天机器人。
多语言发布
该网站支持英语、俄语、中文和阿拉伯语内容,并为每种语言提供专用 URL。页面、出版物、类别及其他受支持的内容可以拥有翻译版本,同时 保留网站的 URL 结构、SEO 元数据和语言关联关系。
翻译工作流程可以使用 AI 辅助,并且可复用横幅标签和付费墙标记等内部内容标记会被保留,因此翻译文章时不会意外地连同应用程序逻辑一起被翻译。
可复用内容横幅
CMS 包含可复用的横幅变体,可以使用 {*banner1*} 或 {*banner2*} 等简单标签插入页面和出版物中。横幅内容可以集中管理,
无需手动将相同的 HTML 复制到多篇文章中。
这样一来,只需在一个地方更改宣传信息、公告或行动号召即可,无需翻找几十篇旧帖子,试图回忆六个月前我把它粘贴到了哪里。
媒体与特色图片
通过 CMS 上传的图片会在网站使用之前经过验证和处理。 出版物的特色图片采用方形格式,这样可以保留完整的作品,而不会被强行从中心裁剪成 一个它从未针对其设计的形状。
CMS 还可以为媒体文件重命名,以生成更简洁的 URL,并在受管理的媒体文件名发生变化时更新内容引用。
付费评论
出版物和快速帖子可以通过 Stripe 驱动的支付流程接受评论。 快速帖子评论使用独立的一美元类别,而出版物评论则可以使用其单独配置的价格。
支付成功并不会自动将评论发布到公共网站上。付费评论仍会先进入审核流程,因为向某人收取一美元并不会自动 让他们输入的所有内容都成为好主意。
付费联系表单
联系系统会在将咨询视为已送达之前使用 Stripe。访客可以提交自己的 信息和消息,但系统会告知他们,在确认付款之前,该咨询仍处于锁定状态。
在内部,待处理的咨询仍可从管理面板中查看。这让我能够看到某人尝试发送的内容, 同时不改变公开规则:在 Stripe 确认付款之前,该咨询不会被视为已送达。
安全中心
CMS 包含一个专用的安全中心,用于记录可疑活动、身份验证失败、被阻止的请求、管理操作、WordPress 探测、Stripe webhook 问题以及其他与安全相关的事件。日志可能包括源 IP、请求路径、用户代理、已验证身份的管理员、严重性、时间戳以及重复命中次数。
密码、Cookie、授权标头、API 密钥、Stripe 密钥和 CSRF 令牌等敏感信息会被有意排除或编辑。安全日志应帮助调查攻击者,而不是为其提供一份整齐索引的清单,列出他试图窃取的所有内容。
IP 和网络封锁
可以封锁单个 IPv4 和 IPv6 地址,并在必要时限制 CIDR 范围。系统可以在 CMS 内执行封锁,也可以生成 Apache 级别的规则,在请求生命周期的更早阶段拒绝请求。
被封锁的访客会收到自定义安全页面,而不会获得有关触发了哪条规则的有用细节。如果有人正在扫描网站寻找漏洞,我并不觉得自己有义务提供免费的技术支持,准确解释我是如何发现他们的。
WordPress 蜜罐
AlexanderMirvis.com 并未运行 WordPress,但自动扫描器并没有收到这一消息。因此,针对常见 WordPress 登录位置的请求可以被引导至一个专门设计为蜜罐的虚假 WordPress 登录界面。
蜜罐会记录有关此次尝试的有用信息,同时有意拒绝存储访客输入的密码。任何人都可以随心所欲地花费时间尝试登录 WordPress。只有一个小问题:登录界面后面根本没有 WordPress 安装。
它本质上是一扇画在砖墙上的数字门。
受保护的配置和机密文件
服务器配置会拒绝对环境文件、源代码控制目录、数据库转储、备份文件、配置文件、隐藏文件、临时文件以及其他 不应公开下载的资源的请求。
自动扫描器仍然每天请求诸如 /.env、/.git/config、
/backup.sql 以及类似路径。它们尽管继续请求即可。这至少给安全日志找点事情做。
安全的管理会话
管理员身份验证采用更严格的密码要求,并在支持的情况下使用现代密码哈希、会话重新生成、安全 Cookie 设置、登录限流、 非活动时限、会话绝对过期、CSRF 防护以及服务器端授权检查。
敏感的管理功能并不只是通过隐藏按钮来保护。服务器会独立验证权限,因为用 CSS 移除按钮通常被认为是访问控制的 糟糕替代方案。
上传安全
上传的文件会经过检查,而不是盲目信任浏览器提供的文件名或 MIME 类型。图像可以被解码并重新编码为全新的 WebP 文件,可执行扩展名会被拒绝,并且上传目录经过配置,确保文件不会意外变成可执行的 PHP 文件。
换句话说,将文件命名为 totally-a-photo.php 并不会自动让服务器相信它来自相机。
安全标头与服务器加固
网站使用 HTTP 安全标头来强制执行 HTTPS、保护内容类型、限制框架嵌入、控制引荐来源行为、管理权限以及实施内容安全策略。目录列表已禁用,内部应用目录受到保护,并且对源文件不必要的公共访问受到限制。
这些控制措施都不会让网站神奇地变得无懈可击。其理念是纵深防御:通过多层防护,降低某一方面的失误成功演变为全面入侵的可能性。
自定义 404 与访问阻止页面
错误页面是网站的一部分,而不是通用的服务器界面。404 页面采用轻量级的黑洞动画设计,而被阻止的访客会看到单独的品牌安全页面。
如果页面消失在事件视界中,至少错误消息看起来是经过刻意设计的。
移动的星星、流星、太阳与月亮
公共网站在界面后方运行着轻量级的动态天空。星星缓慢移动,流星以随机间隔出现,而太阳和月亮则根据访客本地浏览器时间遵循 24 小时周期。
月亮还会根据月相周期改变其可见的月相,包括新月、上弦月、盈凸月、满月和下弦月。一个小型的本地天空显示器可以显示当前时间和月面照明情况,而无需请求访客的位置。
交互式太阳系
首页包含一个动画太阳系,在桌面设备上可以使用鼠标重新定位,在移动设备上则可以用手指操作。整体系统在被操控时,行星轨道仍会独立运行。
在较小的屏幕上,移动设备会显示一个简化的四行星版本,使动画更加简洁、运行更快。太阳或月亮会根据访客所在位置的当地时间,在太阳系上方移动。
为网站打造,而不是围绕网站构建
最大的特点在于,这个系统是专门打造的。我可以直接向应用中添加功能,而不必围绕第三方 CMS 的限制来调整整个网站。发布、安全、支付、AI、SEO、自动化和视觉功能,都作为同一系统的一部分运行。
为一个网站构建完整的 CMS,是不是有点过度了?可能是。但到了现在,这个网站已经拥有月相、Stripe 付费墙、WordPress 蜜罐、交互式太阳系以及自己的安全中心,所以我想,这艘船已经驶离港口了。