制作 wordpress 博客静态化到本地
wget 克隆 wordpress 博客镜像
wget -e robots=off -w 1 -xq -np -nH -pk -m -t 1 -P "./wordpress.org" "http://wordpress.org"
用wget做站点镜像 wget -r -p -np -k http://ys138.win
批量替换文本内容
sed -i "s/index.html?p=/index.php?p=/g" `grep -rl "index.html?p=" ./`
批量删除当前目录包括子目录的 .bak 文件
find ./ -name "*.bak" -exec rm -rf {} \;
批量替换文件名 http://blog.csdn.net/wangjichen_1/article/details/14124517
使用【 】 做分割符, -F'\\\[|]' ,如果是其他的分隔符,-F'[ 1 | a | c ]'
#!/bin/bash
find . -type f -name "*.css?*" |
while read name; do
echo $name
newName=$(echo $name | awk -F'[|?]' '{print $1}')
echo $newName
mv $name $newName
done
抓取的文件有时候是 index.html?p=555 这个种格式的,index.html 中的超链接也是这种格式的。如果不批量更改的话,用这个 php 文件做个跳转也方便。
需要wordpress的备份文件,从备份文件中分析得到 id 和 url 的关系
<?php
/* *
* 从 wordpress 的备份数据中提取 id 和 url
* 适用于 wget 提取的 wordpress 静态镜像
*
*/
$xmlfile = 'wordpress.2017-05-10.xml'; # wordpress备份文件
$host = 'ys138.win'; # 不带http或者https,最后边不加 /
if(file_exists('url.txt') == false){
if(file_exists($xmlfile) == false)die('backupfileisnotexists');
$c = file_get_contents($xmlfile);
$line = explode("\n", $c);
$ny = count($line);
$item = '';
$url = '';
for($y = 0;$y < $ny;$y++){
if(strpos($line[$y], '<item>'))$item .= "<itemline=$y>\r\n";
if(strpos($line[$y], '<wp:post_id>')){
$item .= $line[$y] . "\r\n";
$postid = str_replace(array('<wp:post_id>', '</wp:post_id>', '<![CDATA[', ']]>'), '', $line[$y]);
$url .= trim($postid) . ' ';
}
if(strpos($line[$y], '<wp:post_date>')){
$item .= $line[$y] . "\r\n";
$date = str_replace(array('<wp:post_date>', '</wp:post_date>', '<![CDATA[', ']]>'), '', $line[$y]);
$postdate = explode(' ', $date);
$date = str_replace('-', '/', $postdate['0']) . '/';
$url .= trim($date);
}
if(strpos($line[$y], '<wp:post_name>')){
$item .= $line[$y] . "\r\n";
$postname = str_replace(array('<wp:post_name>', '</wp:post_name>', '<![CDATA[', ']]>'), '', $line[$y]);
$url .= trim($postname) . "/\r\n";
}
if(strpos($line[$y], '</item>'))$item .= "</item>\r\n";
}
// file_put_contents('item.txt',$item); # 精简的 item
file_put_contents('url.txt', $url); # 包含 id 和 url
}
$url = file_get_contents('url.txt');
$arr_url = array();
$array = explode("\r\n", $url);
$nz = count($array)-1;
for($z = 0;$z < $nz;$z++){
$array_url = explode(' ', $array[$z]);
$arr_url = $arr_url + array($array_url['0'] => $array_url['1']);
}
// print_r($arr_url); # $arr_url 是 $url 的数组格式
if(isset($_GET['p'])){
$scheme = ((isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == 'on') || (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https'))?'https://':'http://';
$url = $scheme . $host . '/' . $arr_url[$_GET['p']];
echo $url;
header('Location:' . $url);
}
制作 wordpress 博客静态化到本地的更多相关文章
- 怎样搭建一个自有域名的 WORDPRESS 博客?
博客搭建并不复杂,只是过程有点繁琐,适合喜欢折腾的人,主要有下面几个步骤: 新建一个博客文件 购买域名(Domain Name) 注册一个主机空间(Web Host) 域名解析(DNSPod) 安装W ...
- MWeb 1.3.7 发布!增加发布到 Wordpress 等支持 MetaWeblog API 的服务,如:Wordpress 博客、新浪博客、cnblogs、oschina。
MWeb 1.3.7 版的新功能 增加发布到 Wordpress 等支持 Metaweblog API 的服务,目前经测试过的有: Wordpress 博客.新浪博客.cnblogs.oschina. ...
- LNMP环境搭建之php安装,wordpress博客搭建
LNMP环境搭建之php安装,wordpress博客搭建 一.介绍: 1.什么是CGI CGI全称是"通用网关接口"(Common Gateway Interface),HTTP服 ...
- 搭建WordPress博客程序库
搭建WordPress博客程序库 wordpress简介 wordpress是一套利用PHP语言和Mysql数据库开发的开源免费的Blog(博客,网站)程序,用户可以在支持PHP环境和Mysql数据库 ...
- Coding.net代码托管空间申请与使用-安装并运行WordPress博客
参考: http://www.freehao123.com/coding-net/ Coding.net这是一个国内新兴的代码托管平台,功能主要包括:代码托管.在线运行环境.监控代码质量,兼有一定的社 ...
- 如何有规律的备份 WordPress 博客(转)
转自:http://blog.wpjam.com/m/backup-your-blog-regularly/ 我们都知道备份 WordPress 博客应该是规律性的操作,但是事实上往往我们都会因为 ...
- 怎么在阿里云搭建一个WordPress博客(超详细教程)
想以正确的方式启动一个 WordPress 博客吗?我知道,这可能是一个令人恐惧的想法 -- 其实你并不孤单.但是,在帮助很多用户创建博客之后,我决定编写一份详细的指南,让任何没有技术知识的人都能拥有 ...
- 【docker构建】基于docker构建wordpress博客网站平台
WordPress是使用PHP语言开发的博客平台,用户可以在支持PHP和MySQL数据库的服务器上架设属于自己的网站.也可以把 WordPress当作一个内容管理系统(CMS)来使用. WordPre ...
- 巨杉Tech | 十分钟快速搭建 Wordpress 博客系统
介绍 很多互联网应用程序开发人员第一个接触到的网站项目就是博客系统.而全球使用最广的Wordpress常常被用户用来快速搭建个人博客网站.默认情况下,Wordpress一般在后台使用MySQL关系型数 ...
随机推荐
- Python IO编程-组织文件
对于日常中遇到的批量任务,有些可以通过请求python完成自动化,我非常渴望拥有这些能力,在去年学习了python读写文件之后,我马上迫不及待的开始学习‘组织文件’,经过学习,我发现python组织文 ...
- 阿里云主机centos设置虚拟内存
http://blog.csdn.net/luwei42768/article/details/51241758 https://my.oschina.net/u/2306127/blog/65726 ...
- 设计模式 - 组合模式(composite pattern) 迭代器(iterator) 具体解释
组合模式(composite pattern) 迭代器(iterator) 具体解释 本文地址: http://blog.csdn.net/caroline_wendy 參考组合模式(composit ...
- BestCoder 1st Anniversary ($) 1002.Hidden String
Hidden String Accepts: 437 Submissions: 2174 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 26 ...
- Inter-process Communication (IPC)
For Developers > Design Documents > Inter-process Communication (IPC) 目录 1 Overview 1.1 I ...
- 应对加密js的三种方法
经常遇到网页在登录后会对用户输入的帐号和密码通过js进行加密,导致模拟登录这类网站时受到阻碍 这里小记一下当前解决该问题的三种方法 1.利用python实现js同等加密. 2.利用selenium模拟 ...
- Mybatis使用注解进行增删改查
// 增public interface StudentMapper{ @Insert("insert into student (stud_id, name, email, addr_id ...
- nio实现文件读取写入数据库或文件
1.nio实现读取大文件,之后分批读取写入数据库 2.nio实现读取大文件,之后分批写入指定文件 package com.ally; import java.io.File; import java. ...
- sleep实现原理
用户程序中的睡眠: sleep() usleep() nanosleep() sleep()和nanosleep()都是使进程睡眠一段时间后被唤醒,但是二者的实现完全不同.Linux中并没 ...
- struts2学习笔记(7)---数据验证之validateXxx()方法
validateXxx()方法 上一篇文章写了使用Action的validate()方法,validate()仅仅能对action的所有方法进行验证.而要实现对action中特定的方法进行验证,就须要 ...