因为一些原因,我想将 A 社区(有账号系统,用户可编辑)静态地复制为 B 网站(其他都一样,就是没有了账号系统,但是主题等结构都还在,访问者只能查看已发布的帖子),请问技术上有什么实现思路?两个站点实际上存放在各自的物理服务器内,Nginx 反向代理应该无法实现吧?
两个社区都是我个人搭建的,服务器、数据库都可以完全控制。
1
an0nym0u5u5er 211 天前 1
思路很多
一、nginx 有个 sub_title 模块,可以实现类似 str_replace(A,B) 这样的功能,如果要替换的内容很少,可以用这个实现 二、静态化,B 站直接返回 HTML ,优点是每个 URL 处理一次就好,适用于内容不怎么变化的 三、自定义代理,比如你写一个 PHP 脚本作为中转程序,B 站的数据请求这个 PHP 接口,PHP 可以做中间的一些逻辑处理,比如屏蔽一些数据,后台管理页面,去除一些内容之类的,比第一个用 nginx 实现更容易,更灵活 |
2
cruzzz 211 天前 1
我不懂代码,但我之前做的事情和你说的类似。我有 A 站(图片反代站,信息丰富,)一枚,然后我想再搞个 B 站,用来做布局精简,顺便拿来测试一些 SEO 手段,看看能否导致 SEO 毁灭。 就去找 GPT 要了一些代码,它给我的代码就类似这样
// 创建上下文 $context = stream_context_create([ 'http' => [ 'follow_location' => false, // 禁止自动跟随重定向 ], ]); // 获取 HTML 内容 $htmlLines = file($url, false, $context); $html = implode("", $htmlLines); // 创建 DOMDocument 对象并加载 HTML 内容 $dom = new DOMDocument(); $dom->loadHTML($html); // 创建 DOMXPath 对象 $xpath = new DOMXPath($dom); // 使用 XPath 查询表达式获取所有 article 元素 $articles = $xpath->query('//article'); // Initialize the result array $result = array(); // 遍历每个 article 元素 foreach ($articles as $article) { 前提就是,网页地址和模板相对来说很好找规则,否则这个 dom 不容易定位。 这样的效果就是:B 站重新搞个模板,布局换一换,数据全都是临时去 A 站请求的。 然后……谷歌还收录了几万个,现在养了一段时间,bing+google 的日 IP 也上 1K 了= = |
3
yuzo555 211 天前 1
都是你自己控制的那就写个脚本批量生成静态网页不就行了
|
4
busterian 211 天前 1
httrack
|
5
wen20 211 天前
域名解析就能实现
|
6
flynaj 208 天前 via Android
直接同步数据库性能最好。
|