首页 > 其他分享 >typecho全站静态化方案

typecho全站静态化方案

时间:2024-08-07 16:16:48浏览次数:9  
标签:files 全站 get 静态 html typecho file path

实现

利用wget全站保存为html,然后再修改文件中的链接

步骤

把以下代码保存为html.php

<?php
$url = 'https://blog.asbid.cn'; //网址,不能以"/"结尾
$rurl=''; //要替换成路径或网址,可为空,不能以"/"结尾
$dir = __DIR__ . "/" . str_replace('https://', '', str_replace('http://', "", $url));
exec("clear",$clc);
echo $clc[0];
echo "开始下载文件\r\n";
exec("rm -rf {$dir}",$return);
exec("wget -r -p -np {$url}",$return);

$dirs = get_filenamesbydir($dir);

//不处理非html文件
for ($i = 0; $i < count($dirs); $i++) {
    $file=str_replace(__DIR__, "", $dirs[$i]['file']);

    if (!preg_match("/html/",$file)  ) {
        //删除对应的元素
        unset($dirs[$i]);
    
    }
  
}
array_filter($dirs);
sort($dirs);//重新生成索引下标

//网址处理
$count=count($dirs);
for ($i = 0; $i < $count; $i++) {
    $content=str_replace($url,$rurl,file_get_contents($dirs[$i]['file']));
    file_put_contents($dirs[$i]['file'],$content);
    $n=$i+1;
    exec("clear",$clc);
    echo $clc[0];
    echo "文件下载完毕\r\n";
    echo "开始处理文件,共{$count}个文件需要处理,已处理{$n}个\r\n";

}
echo "处理完毕,文件目录:{$dir}\r\n";


function get_allfiles($path, &$files)
{
    if (is_dir($path)) {
        $dp = dir($path);
        while ($file = $dp->read()) {
            if ($file !== "." && $file !== "..") {
                get_allfiles($path . "/" . $file, $files);
            }
        }
        $dp->close();
    }
    if (is_file($path)) {
        $files[] = ['file' => $path];
    }
}
function get_filenamesbydir($dir)
{
    $files = array();
    get_allfiles($dir, $files);
    return $files;
}

然后执行

php html.php

------ THE END ------

typecho

标签:files,全站,get,静态,html,typecho,file,path
From: https://www.cnblogs.com/ifwz/p/18347266

相关文章

  • 记一次SpringBoot配置静态资源路径找不到资源的解决
    静态资源路径配置代码问题在nacos里面配置路径时,路径的最后一个/没带,导致无法查询到静态资源,查询资料得到的处理结果是也就是说有是会查询子目录的,没有只查询这个目录API解释翻译:添加一个或多个资源位置,从中提供静态内容。每个位置都必须指向一个有效的目录。多个位置......
  • 让dedecms变成全站动态浏览有利于企业站
    首页动态化 我们只要把网站根目录下面生成的index.html删除, 然后把index.php里面的代码修改成 代码如下:<?phpif(!file_exists(dirname(__FILE__).&#39;/data/common.inc.php&#39;)){header(&#39;Location:install/index.php&#39;);exit();}require_once(dir......
  • Typecho在Ubuntu 22.04上的安装部署
    安装Nginx并配置访问安装PHP并输出脚本结果配置typechoNginx安装并验证aptinstallnginxsystemctlstartnginx正常情况应该可以看到Nginx的欢迎页面了,如果看不到就是防火墙的问题,设置下防火墙放通即可。安装PHP并使用Nginx代理aptinstallphp-fpmphp-curlphp-gd......
  • 静态代理与动态代理区别?
    静态代理和动态代理是Java中常用的两种代理模式,用于为目标对象提供额外的功能。以下是它们的主要区别:静态代理代理类在编译时确定:静态代理类在编译时就已经存在,并且需要手动编写。代理类和目标类实现相同的接口:代理类和被代理的目标类都需要实现相同的接口。实现较......
  • wsl 配置centos8静态ip的几种方法
    方法1:安装systemd-networkdsudodnfinstallsystemd-networkdifconfig查看要修改的网络,然后启动服务:sudosystemctlenable--nowsystemd-networkd在/etc/systemd/network/目录下创建文件eth0.network来配置eth0接口[Match]Name=eth0[Network]Address=1......
  • go-zero微服务框架的静态文件服务
    目录go-zero微服务框架的静态文件服务应用场景go-zero版本新建项目目录新建demo.api文件生成api代码新建静态1.html文件查看文件目录写入静态服务代码启动api服务访问1.html参考文档go-zero微服务框架的静态文件服务应用场景通过go-zero的rest.WithFileServer("/public",......
  • Go 静态编译及在构建 docker 镜像时的应用
    Go语言具有跨平台和可移植的特点,同时还支持交叉编译,可以在一个系统上编译出运行在另一个系统上的二进制可执行文件,这是因为Go在编译时支持将依赖的库文件与源代码一起编译链接到二进制文件中,所以在实际运行时不再需要依赖运行环境中的库,而只需要一个二进制文件就可以运行,在构建......
  • 用静态工厂方法代替构造器
    静态工厂方法就是让类提供一个公用的静态工厂方法,根据该方法来返回一个实例对象例如Boolean中的valueof方法:publicfinalclassBooleanimplementsjava.io.Serializable,Comparable<Boolean>{/***The{@codeBoolean......
  • Typecho页面浏览次数统计插件已修正适配Typecho 1.2
    沧海桑田,时隔多年Typecho终于迎来了重大更新(竟然在有生之年更新了(狗头保命))。Typecho刚发布的时候还是PHP5流行的时代,本身升级了更高语言版本,带来了更好的程序执行效率,提高了编程效率,但升级后存在发现“页面浏览次数统计插件”插件不能使用了。问题回顾我一直用的是作者(H......
  • 静态路由的配置和实验
    简介:静态路由是一种需要管理员手工配置的特殊路由.静态路由比动态路由使用更少的带宽.并且不占用CPU资源来计算和更新路由.但是当网络发生故障或者拓扑发生变化后.静态路由不会自动更新.必须手动重新配置.静态路由有5个主要参数:目的地址和掩码.出接口和下一跳.优先级使用静态......