显示标签为“WordPress”的博文。显示所有博文
显示标签为“WordPress”的博文。显示所有博文

2025年3月5日星期三

WordPress备份的内容及方法

为了防止意外发生,需要定期备份WordPress的数据,以下是我根据自己的需要整理的备份内容及方法:

1. 备份数据库

  • 使用插件:如Database Backup for WordPress插件,可自动备份数据库到电子邮箱。(频率:每周一次,自动)
  • 数据库操作:通过phpMyAdmin导出数据库文件。(频率:每年一次,手动)

2. 备份文章

  • 备份到博客托管平台:WordPress后台导出xml文件,然后导入到WordPress.com或者Blogger。(频率:每年一次,手动)
  • 电子邮件备份:使用电子邮件订阅博客服务(如follow.it),每次更新文章时,将会收到邮件。(频率:每次发布文章一次,自动)

3. 备份文件

  • 主题文件:备份wp-content/themes目录。
  • wp-config.php:包含数据库连接信息等重要配置。
  • .htaccess:用于URL重写等服务器配置。
  • robots.txt:搜索引擎规则。
  • favicon.ico:网站图标。
  • 上传文件:备份wp-content/uploads目录。因为我的图片全部是外链,不需要备份这个文件夹。
  • 手动备份:通过FTP或文件管理器下载文件。
  • 频率:每次修改后立即备份。

4. 备份外链图片

  • 查找包含图片的文章
    SELECT ID, post_title,guid FROM wp_posts WHERE post_type = 'post' AND post_content LIKE '%<img%';
  • 查找包含2张及以上图片的文章
    SELECT ID, post_title, guid FROM wp_posts WHERE post_type = 'post' AND (LENGTH(post_content) - LENGTH(REPLACE(post_content, '<img', ''))) / LENGTH('<img') >= 2;
  • 备份方法:手动将文章复制粘贴到国内各大平台,如微信号、知乎、豆瓣、头条号等,这些平台会自动将外链图片上传到自身的服务器。
  • 频率:不定期备份。

2024年12月10日星期二

静风说更换域名及网址301重定向

一、 为什么要换域名

目前这个域名用了快十年了,域名注册的时间看起来还挺有意义,是2015年5月5日。当时移动端还没有兴起,我的大部分网上冲浪的时间是在电脑端,于是注册了一个三拼(三个全拼的汉语拼音)的域名,用电脑的键盘输起来很顺手(当时对域名的要求就是没有数字和下划线)。后来移动端越来越发达,手机使用的时间也越来越长,电脑使用得越来越少。这时在手机上输入博客的网址,显得很不方便,12个字母总是输错,输起来也着急。于是就萌生了把博客换成更短的域名。

思来想去,最终确定了jfsay.com这个域名,因为jfsay和博客的名称「静风说」相对应。Jasmine看到后说,为什么不用jfs.com,更短更好记。我笑说,这个我们买不起。

在输入jfsay时,发现输入法默认出来的结果是「减肥少熬夜」,竟然是劝人注重健康的,也合我意。

二、 购买域名

jfsay.com这个域名被人注册了,这几天突然看到可以注册,于是和Jasmine商量后,决定购买了。我找了好多家域名注册商对比价格,最后发现Spaceship 最便宜,5.87美元,折合人民币是42.73元。

三、 主机空间绑定新域名

域名解析很容易,添加一条A记录到主机的IP地址就可以了。主机空间绑定新域名时,却遇到了问题,提示无法绑定新的域名。问了主机商才知道,我是入门型的套餐,只能绑定一个域名。我只好把主机空间的域名改成新域名。很快,新的域名可以正常访问博客了。

四、老域名301重定向到新域名

下面要做的是把老域名301重定向到新域名,在这个地方我花了好多时间。

我原以为旧域名A记录到主机的IP,或者301重定向到新域名就可以了。后来发现需要做域名绑定,把域名和空间对应起来。主机商给我的解决方案是,需要升级套餐然后绑定多个域名,其余一概不管。我心想,只是为了网址跳转去掏钱升级主机空间太不划算。何不申请个免费的虚拟主机,只做301重定向?

免费的虚拟主机很多,随便就申请了下来。绑定域名,.htaccess重定向,很快就做好了。原以为大功告成,没想到https 的网址会提示网址不安全。也就是http的网址可以正常跳转,https的网址会卡在那里不动。

这个免费的虚拟主机没有免费的SSL,却有个SSL/TLS证书配置页面。我心想,申请一个免费SSL证书不就行了吗。我试了好几家免费证书提供商,总是在域名确认的时候出错,无法确认域名。最后在腾讯云上申请下来了。但是这个虚拟主机没有证书上传和部署的地方,查了好久也解决不了。

既然SSL证书解决不了,我想着是否能把https的网址跳转到http呢?上网查了下,都是http的网址跳转到https的,后来才知道https的网址跳转到http技术上行不通。只好作罢。

就在我一筹莫展的时候,我找到了redirhub.com,一个专门做网址跳转的网站,而且支持HTTPS。我用了十几分钟,跟着网站的步骤提示,很快就做好了301网址重定向,完美解决了https网址跳转的问题。

遥想当年,我在2015年更换域名的时候就没有这么麻烦,因为那时主机空间可以绑定多个域名,直接在.htaccess做301重定向就行了。

麻烦各位看官及时惠存新的网址,更换RSS订阅地址。

新的网址:http://www.jfsay.com/
新的RSS地址:https://www.jfsay.com/feed

2023年10月16日星期一

WordPress作者评论的名称后面添加「作者」的文本标识

标题比较拗口,举例说明如下:假如作者名称是ABC,默认的作者评论是ABC说:ZZZ。想要实现的效果是ABC(作者)说:ZZZ。也就是在作者的名称后面加了「作者」的提示,这样当评论比较多时可以很快发现哪条是作者的评论。

下面是网上的找来的实现方法,我做了一点修改,只需将代码放到主题的模板函数文件里 (functions.php)就行了。

if ( ! class_exists( 'WPB_Comment_Author_Role_Label' ) ) :class WPB_Comment_Author_Role_Label {public function __construct() {add_filter( 'get_comment_author', array( $this, 'wpb_get_comment_author_role' ), 10, 3 );add_filter( 'get_comment_author_link', array( $this, 'wpb_comment_author_role' ) );} //Get comment author role function wpb_get_comment_author_role($author, $comment_id, $comment) { $authoremail = get_comment_author_email( $comment); //Check if user is registeredif (email_exists($authoremail)) {$this->comment_user_role = "(作者)";} else { $this->comment_user_role = '';} return $author;}  //Display comment author                   function wpb_comment_author_role($author) { return $author.= $this->comment_user_role; } }new WPB_Comment_Author_Role_Label;endif;

Update:发现了一个更简单的方法,只需要修改CSS样式就能实现这样的功能,只需找到作者的评论,用CSS伪元素就行了,下面是我的使用的代码:

.bypostauthor > .comment-body > .comment-meta > .comment-author > .fn:after {     content: "作者";    background: #FF1100;    color: white;        margin: 0 3px;    border-radius: 3px;    font-size: 8px;    padding: 1px 2px;    vertical-align: middle;}    

2023年6月28日星期三

WordPress设置robots.txt的最佳方法

很久以前我就设置了博客的robots.txt,想让搜索引擎只抓取网站中关键的内容,不抓取后台的文件和页面。这样做的原因如下:

搜索机器人对每个网站都有一个爬网配额,这意味着它们在爬网会话期间对一定数量的网页进行爬网。如果他们没有完成对您网站上所有网页的抓取,那么它们将在下一个会话中返回并恢复抓取。这可能会减慢网站索引的速度。

您可以通过禁止搜索机器人尝试抓取不必要的页面(如 WordPress 管理页面、插件文件和主题文件夹)来解决此问题。通过禁止不必要的网页,可以节省搜索引擎爬网配额。这有助于搜索引擎抓取网站上的更多页面并尽快将其编入索引。

我在网上各处寻找robots.txt的设置方法,取各家之长最终将robots.txt设置如下(注意现在这个方法已经过时了):

User-agent: *Disallow: /wp-admin/Disallow: /wp-content/Disallow: /wp-includes/Disallow: /trackback/Disallow: /comments/Disallow: /attachment/Disallow: /comments/feedDisallow: /feedDisallow: /*/feedDisallow: /*/comment-page-*Disallow: /*?replytocom=*Disallow: /*/trackbackDisallow: /?s=*Disallow: /*/?s=*\Disallow: /wp-*.php

最近我才知道这样设置robots.txt已经是不对的(过时了),因为搜索引擎在不断进步,上面那样设置robots.txt反而不利于搜索引擎索引。而且即使一个页面被robots.txt阻止了,它可能仍会被编入索引,如果不想让它被搜索引擎索引,最好的方法是在页面上放置noindex元标记。

因为WordPress已经自动阻止索引某些敏感文件和URL,例如WordPress管理区域,所以,对于WordPress,设置robots.txt最好的示例如下(对于所有爬虫程序不受限制地自由抓取这个网站):

User-Agent: *Disallow:Sitemap: https://www.example.com/sitemap_index.xml

以下内容来源自:https://yoast.com/ultimate-guide-robots-txt/

robots.txt优点:管理爬网预算

通常可以理解,搜索蜘蛛到达一个网站时,会预先确定它将抓取多少页面(或它将花费多少资源/时间,基于网站的权威/大小/声誉,以及服务器的响应效率)。SEO称之为爬行预算。

如果您认为您的网站存在抓取预算问题,阻止搜索引擎将精力「浪费」在网站的不重要部分可能意味着专注于重要的部分。

有时阻止搜索引擎抓取您网站有问题的部分可能是有益的,尤其是在必须进行大量 SEO 清理的网站上。整理好东西后,您可以让它们重新进入。

robots.txt缺点:不从搜索结果中删除页面

即使您可以使用robots.txt文件告诉爬虫它不能在您的网站上的位置,您也不能使用它向搜索引擎说哪些URL不会显示在搜索结果中。换句话说,阻止它不会阻止它被索引。如果搜索引擎找到足够的指向该 URL 的链接,它将包含它;它只是不知道该页面上的内容。

如果您想可靠地阻止网页出现在搜索结果中,请使用noindex元标记。这意味着要找到该标记,搜索引擎必须能够访问该页面,因此不要用robots.txt阻止它。 

使用 noindex 阻止搜索引擎编入索引(https://developers.google.cn/search/docs/crawling-indexing/block-indexing?hl=zh-cn)

noindex 是一个包含 <meta> 标记或 HTTP 响应标头的规则集,用于防止支持 noindex 规则的搜索引擎(例如 Google)将内容编入索引。当 Googlebot 抓取该网页并发现该标记或标头时,Google 就会完全阻止该网页出现在 Google 搜索结果中,不论是否有其他网站链接到该网页。

不要在robots.txt中阻止CSS和JS文件

自2015年以来,Google Search Console警告网站所有者不要阻止CSS和JS文件。多年来,我们一直告诉你同样的事情:不要在你的robots.txt中阻止CSS和JS文件。让我们解释一下为什么您不应该阻止Googlebot的这些特定文件。

通过阻止CSS和JavaScript文件,您可以阻止Google检查您的网站是否正常运行。如果您屏蔽了文件中的 CSS 和 JavaScript 文件,Google 将无法按预期呈现您的网站。现在,谷歌无法理解您的网站,这可能会导致排名降低。此外,甚至像 Ahrefs 这样的工具也会渲染网页并执行 JavaScript。所以,如果你想让你最喜欢的SEO工具工作,不要阻止JavaScript。

这与谷歌变得更加「人性化」的普遍假设完全一致。谷歌希望像人类访问者一样查看您的网站,以便它可以区分主要元素和附加元素。谷歌想知道JavaScript是增强了用户体验还是破坏了用户体验。

robots.txt缺点:不传播链接值

如果搜索引擎无法抓取网页,则无法将链接值分布在该网页上的链接中。当你在robots.txt中阻止了一个页面时,这是一个死胡同。任何可能流向(和流经)该页面的链接值都将丢失。

传统上,WordPress喜欢阻止对wp-admin和wp-include目录的访问。 但是,这已经不再被视为最佳实践。

以下内容来源自:https://kinsta.com/blog/wordpress-robots-txt/#what-to-put-in-your-robotstxt-file

robots.txt并不是控制搜索引擎索引哪些页面的万无一失的方法。如果您的主要目标是阻止某些页面包含在搜索引擎结果中,正确的方法是使用noindex元标记或密码保护。

这是因为你的robots.txt并没有直接告诉搜索引擎不要索引内容——它只是告诉他们不要抓取它。虽然 Google 不会从您的网站内部抓取标记区域,谷歌自己声明如果外部网站链接到您使用 robots.txt 文件排除的网页,Google 仍可能会将该网页编入索引。

谷歌网站管理员分析师约翰·穆勒(John Mueller)也证实,如果一个页面有指向它的链接,即使它被 robots.txt阻止了,可能仍会被编入索引。

以下内容来源自:https://yoast.com/wordpress-robots-txt-example/

搜索引擎不断改进他们抓取网络和索引内容的方式。这意味着几年前曾经是最佳实践的东西可能不再有效,甚至可能损害您的网站。

如今,最佳实践意味着尽可能少地依赖robots.txt文件。只有当您遇到复杂的技术挑战(例如,具有分面导航的大型电子商务网站)或没有其他选择时,才真正需要robots.txt文件中的URL。

通过robots.txt阻止URL是一种“蛮力”方法,可能会导致比解决更多的问题。

对于大多数WordPress网站,以下示例是最佳实践:

User-Agent: *Disallow:Sitemap: https://www.example.com/sitemap_index.xml

这段代码有什么作用?

  1. User-agent: * 该指令指出,以下任何说明适用于所有爬网程序。
  2. Disallow: 该指令没有进一步的说明,所以我们说,所有爬虫都可以不受限制地自由抓取这个网站。
  3. 在robots.txt文件中,我们还链接到XML站点地图的位置,使Google,Bing和其他搜索引擎更容易找到它。
  4. 我们还为查看文件的人提供了一些信息(链接到此页面),以便他们了解我们为什么以这种方式设置文件。

WordPress和Yoast SEO已经自动阻止索引某些敏感文件和URL,例如WordPress管理区域(通过x-robots HTTP标头)。

robots.txt创造死胡同

搜索引擎需要发现、抓取和索引您的页面,然后您才能在搜索结果中争夺可见性。如果您通过 robots.txt 阻止了特定网址,搜索引擎将无法再抓取这些页面以发现其他网址。这可能意味着关键页面不会被发现。

robots.txt否认其价值

SEO的基本规则之一是来自其他页面的链接会影响您的表现。如果某个网址被阻止,搜索引擎不仅不会抓取它,而且还可能不会分发指向该网址或通过该网址网站上其他页面的任何“链接值”。

谷歌完全呈现您的网站

人们过去常常阻止对CSS和JavaScript文件的访问,以使搜索引擎专注于那些最重要的内容页面。如今,谷歌获取你所有的样式和JavaScript,并完全呈现你的页面。了解页面的布局和呈现方式是评估质量的关键部分。所以谷歌不喜欢你拒绝它访问你的CSS或JavaScript文件。

以前阻止访问您的目录和插件目录的最佳实践不再有效,这就是为什么我们与 WordPress 合作删除了 4.0 版的默认禁止规则。

链接到您的 XML 站点地图有助于发现

robots.txt 标准支持将指向 XML 站点地图的链接添加到文件中。这有助于搜索引擎发现您网站的位置和内容。

这可能感觉是多余的,因为您应该已经将站点地图添加到Google Search Console和Bing网站管理员工具帐户中,以访问分析和性能数据。但是,在robots.txt 中拥有该链接为爬虫提供了一种万无一失的方式来发现您的站点地图。

2023年3月9日星期四

谷歌AdSense的自动广告导致侧边栏掉到下面去

今天发现博客的网页打开很奇怪,原来是侧边栏掉到下面去了。本来左侧是文章内容,右侧是侧边栏,现在变成了左侧是文章内容,下面是谷歌AdSense广告,再下面才是侧边栏。

网站用的是谷歌AdSense的自动广告,看来是谷歌将广告插入到文章内容和侧边栏之间了。出错的网页结构如下:

<div class="row" style="height: auto !important;">      <div id="primary" class="content-area col-lg-8" ></div>/*文章内容*/     <div class="google-auto-placed" style="width: 100%; height: auto; clear: both; text-align: center;"></div>/*谷歌AdSense广告*/     <aside id="secondary-1" class="sidebar sidebar-secondary-1 text-left col-lg-4" ></div>/*侧边栏*/</div>

我一开始以为是谷歌自动广告的问题,登录AdSense的自动广告设置页面也找不到可以配置的选项,之后去AdSense的帮助论坛去发帖求助。

后来网上有人说AdSense的自动广告会破坏页面显示样式,因为AdSense自动广告通过分析页面的结构来插入广告,如果网页结构有问题会导致页面错乱。这时我觉得可能我的主题有问题,通过浏览器自带的开发者工具,发现class=”row”用的是弹性布局display: flex,在class=”row”中添加以下代码问题就解决了:

flex-direction: row;  /*作为一行,水平地显示弹性项目*/flex-wrap: nowrap;    /*flex中的元素被摆放到一行*/

这样把文章内容和侧边栏摆到一行去了,而且不换行,谷歌的自动广告就没法在它们之间插入广告把侧边栏挤掉到下面去了。

2022年12月8日星期四

博客同步到WordPress.com托管平台

独立博客有个问题需要定期的续费域名和主机空间,如果主观上不想续费,客观上忘记续费或者不能续费的话,博客也就不复存在了,辛辛苦苦写的文字也就没有了。

我一直都有这个担心,每篇文章都会同步到邮箱,每年会把当年写的所有文章一篇篇复制下来保存在本地电脑。但这样做还是有一个问题,博客不存在了,在网络世界中这些文字就消失了,其他人再也看不见了。几年前把博客里的文章同步到Blogger,但是导出的文件还需要转换格式才能顺利导入,而且Blogger长期被墙,访问不方便。

最近发现WordPress自己有个博客托管平台WordPress.com,注册账号后就会有一个免费的博客网站了,不用自己去购买域名和主机空间,操作起来和WordPress一模一样。

我的博客用的就是WordPress搭建的,导出文章,再导入WordPress.com很顺畅,几分钟就搞好了,不用转换格式,而且WordPress.com国内可以正常访问,比较方便些。

但是在使用WordPress.com时发现和独立博客的区别,没法安装插件、没法修改页面代码、没法添加广告等,处处受限制,不能随心所欲地控制博客。但是在WordPress.com上面写博客不用管域名和服务器,每年可以剩下几百块钱,而且只要WordPress.com一直存在,写的文章就一直存在。我这几天就看到有的博客已经十几年没更新了,博客的文章仍然可以正常访问。

我打算定期将博客里的文章同步到WordPress.com上,这样即使这个博客没有了,这些年写的文字在网络世界里还会继续存在。

说了这么多,我的WordPress.com上的博客网址是:https://jfsay.wordpress.com/

2022年11月23日星期三

开始使用WordPress子主题

新的主题安装好以后或多或少会对它进行修改,但是当主题更新以后修改的内容就会被覆盖丢失了,WordPress早就考虑到这个问题,那就是子主题。

除非你安装的主题永远不会更新,不然尽快使用子主题吧,建议安装完新主题后立即创建子主题。

创建子主题的方法:

一、通过WordPress万能的插件,比如Child Theme Configurator,创建完成子主题就可以把插件删除了。

二、手工创建,下面说下手工创建的步骤

假设原主题的名字是ABC

1.在themes目录新建一个文件夹ABC Child(和ABC在同一级目录)

2.在ABC Child下新建style.css文件

3.在style.css文件中添加以下内容:

/*
Theme Name: ABC Child
Template: ABC
*/

4.这样子主题也就创建完成了,启用子主题

5.以后如果改动原主题中任何的内容,只要在ABC Child新建同名文件就行了。简单的方法是复制一份文件到ABC Child中,然后再修改这份文件。

6.模板函数 (functions.php)是个例外,子主题的functions.php和原主题是同时生效的,也就是说原主题的functions.php里的内容不要出现在子主题中,子主题functions.php一开始是空白的,只新增修改的内容。

2022年11月22日星期二

终于解决了WordPress手机端发布文章的问题——都是XMLRPC惹的祸

现在博客里的绝大多数文章都是在手机上写的,写好以后也是通过手机来发布。

今年7月开始,WordPress手机客户端发布文章的时候总是提示失败,怎么都弄不好,于是把这个APP卸载了,重新安装,重新绑定站点,这时提示「无法连接。服务器上没有所需的XML-RPC方法」。

这时我知道问题出现在xmlrpc上了,我反复找主机商好几次,主机商说他什么都没有做,让我自己停用所有的插件和使用默认主题试一下,我尝试之后问题还是没有解决。

我之后在网上查找「xmlrpc不能使用」的原因,没想到找到的却是「xmlrpc禁用」的方法,心想禁用的方法反过来也就是使用的方法,于是我把这些禁用xmlrpc的方法都看了一遍。方法有如下几个:修改functions.php、.htaccess文件、wp-config.php、Apache配置文件和安装插件等。除了Apache配置文件因为没有权限查看和修改外,其他的我都试了还是没有解决。

我把整个站点的文件下载了下来,使用查找文件内容的软件来搜索「xmlrpc」和「xml」的关键字,一个个文件来查找,没有找到问题所在。

后来发现访问https://jingfengshuo.com/xmlrpc.php会跳转到127.0.0.1,于是又去搜索WordPress做301重定向的方法,想看下哪里做了这个重定向,找了cpanel和.htaccess也没找到xmlrpc.php被跳转的地方。

实在找不到解决办法,就去WordPress的官方论坛看看,看来看去也没找到同样问题的帖子。

试了好多方法都没能解决,只好作罢,我在手机浏览器里收藏了博客的后台网址,这几个月只能通过手机浏览器用账号密码登录后台来发布文章,虽然不方便但也能用。

今天在博客后台搜索xmlrpc的插件,发现一款名叫「Rename XMLRPC」的插件,它的介绍如下:

Make XML-RPC work if you rename the file. Some hosts block access to xmlrpc.php file making it impossible to use

这不就是我要的功能吗?真的是踏破铁鞋无觅处啊。我赶紧安装了这个插件,安装后却没找到配置和使用界面,再打开插件的详情页面,作者写的几句话的使用方法实在看不懂。于是打开插件文件来看代码,看到作者使用xmlrpc2.php这个名字。于是我把自带的xmlrpc.php复制了一份,重命名为xmlrpc2.php,然后再WordPress安卓客户端绑定网站,输入https://www.jfsay.com/xmlrpc2.php,成功绑定了网站!

时隔四个月,终于又能在WordPress手机客户端连接网站了,这四个多月我花了几十个小时来解决这个问题而不得,现在总算解决了,太高兴了!

2022年11月21日星期一

WordPress使用WP-Syntax插件的问题

收到Google的邮件,说是在我的网站上检测到「移动设备易用性问题」,邮件内容如下:

您好!Search Console 发现您的网站受到3 个移动设备易用性问题的影响。我们在您的网站上发现了以下问题。我们建议您尽可能修正这些问题,以便您的网站在Google 搜索中实现最佳体验和覆盖率。
首要问题
•可点击元素之间的距离太近
•文字太小,无法阅读
•内容宽度超过了屏幕显示范围

初看这封邮件觉得谷歌可能搞错了,我的博客里的字体够大了,自己平时都在用手机流量,看起来也没问题。

根据邮件内的超链接,跳转到了Google Search Console,里面有这3个问题的详细说明和具体的网页URL,我把这些URL粘贴到浏览器中访问发现了问题所在,它们有一个共同属性:每个页面的文章里都粘贴的有「代码」,用的是WP-Syntax插件。

这个插件用来高亮显示代码的,但是也带来了谷歌所指的几个问题:字体太小、距离太近、有的代码如果不换行会超出屏幕范围。

为什么会用WP-Syntax插件?好多年前WordPress用的还是经典编辑器(Classic Editor),这个编辑器对文章中插入代码很不友好,只好用插件来解决这个问题。

后来WordPress使用了古腾堡编辑器(Gutenberg),这个编辑器原生支持「代码」的插入,使用起来很方便,不再像以前插入代码时需要在代码编辑器和可视化界面来回切换。最近插入代码的文章我使用的都是古腾堡编辑器自带的功能,但是以前写的文章太多,我又懒得动它们,所以之前使用WP-Syntax插件来显示代码的文章就没去管了。

现在发现了WP-Syntax插件的问题,只好改正了。文章数量比较多,我试图寻找「智能替换」的方法,没有找到,只能手工一篇篇文章编辑替换了,花了我几个小时。看来使用插件一时爽,隐患却很多,以后尽量用WordPress原生的功能了。

2022年7月13日星期三

WordPress安卓客户端无法连接网站

前几天用安卓手机的WordPress APP发布文章的时候老是提示失败,也不知道是什么原因。我把WordPress APP绑定的站点给删除了,重新绑定网站的时候提示「无法连接。服务器上没有所需的XML-RPC方法。」

上网搜了一下,有人说是由于主机商禁用了XML-RPC导致的。

于是联系主机服务商:「 请问主机是否禁用了XML-RPC?」主机商说没有。

我只能自己排查。突然想到微软有一款live write 的软件可以写博客。我装了以后在绑定网站的时候提示https://jingfengshuo.com/xmlrpc.php永久重定向。

然后发现xmlrpc.php被做了301的重定向,访问https://jingfengshuo.com/xmlrpc.php时候会跳转到127.0.0.1,这时我才明白为什么WordPress找不到xmlrpc方法了,本来就不存在肯定就找到了。

于是我排查怎么做了重定向?先去.htaccess看下,没找到。又打开xmlrpc.php文件,看了也是没有。登录WordPress后台看插件和主题,还是没有。最后找cPanel,也没有找到。

这下我就纳闷了,我把xmlrpc.php删除掉,还是会301重定向,看来是服务器层做的了。我又去问了主机商,主机商答复还是没有。

找来找去确实找不到原因了,又想在手机上登录WordPress来发布文章,只能用手机浏览器登录后台了。

更新(已解决)

确认问题出现在xmlrpc上,但是又不知道哪里做了限制,导致xmlrpc.php无法使用。解决方法可查看以下文章:终于解决了WordPress手机端发布文章的问题——都是XMLRPC惹的祸 

WordPress安卓客户端无法连接网站

前几天用安卓手机的WordPress APP发布文章的时候老是提示失败,也不知道是什么原因。我把WordPress APP绑定的站点给删除了,重新绑定网站的时候提示「无法连接。服务器上没有所需的XML-RPC方法。」

上网搜了一下,有人说是由于主机商禁用了XML-RPC的原因。

于是联系主机服务商:「 请问主机是否禁用了XML-RPC?」主机商说没有。

我只能自己排查。突然想到微软有一款live write 的软件可以写博客。我装了以后在绑定网站的时候提示https://jingfengshuo.com/xmlrpc.php永久重定向。

然后发现xmlrpc.php被做了301的重定向,访问https://jingfengshuo.com/xmlrpc.php时候会跳转到127.0.0.1,这时我才明白为什么WordPress找不到xmlrpc方法了,本来就不存在肯定就找到了。

于是我排查怎么做了重定向?先去.htaccess看下,没找到。又打开xmlrpc.php文件,看了也是没有。登录WordPress后台看插件和主题,还是没有。最后找cPanel,也没有找到。

这下我就纳闷了,我把xmlrpc.php删除掉,还是会301重定向,看来是服务器层做的了。我又去问了主机商,主机商答复还是没有。

找来找去确实找不到原因了,又想在手机上登录WordPress来发布文章,只能用手机浏览器登录后台了。

WordPress下解决百度不支持索引型sitemap的办法

最近在百度里发现博客里的最新文章都没有收录,登录百度搜索资源平台(站长平台)发现之前提交的sitemap的状态显示「索引型不予处理」。搜了下什么是「索引型sitemap」,得到结果是xml下不能嵌套xml,也就是说sitemap文件里显示的是最终的网址,而不能是子xml。

我的博客的sitemap是用Google XML Sitemaps插件生成的,百度之前也能用。我打开发现这个xml下还有子xml,也就是百度说的「索引型sitemap」。再搜索发现wordpress已经自带生成sitemap文件的功能了,于是停了Google XML Sitemaps插件,再访问https://www.jfsay.com/wp-sitemap.xml就是wordpress生成的sitemap了。但是等等,为什么也是xml,不是文章网址呢。如下所示:

https://www.jfsay.com/wp-sitemap-posts-post-1.xml
https://www.jfsay.com/wp-sitemap-posts-page-1.xml
https://www.jfsay.com/wp-sitemap-taxonomies-category-1.xml
https://www.jfsay.com/wp-sitemap-taxonomies-post_tag-1.xml
https://www.jfsay.com/wp-sitemap-users-1.xml

但是,上面这些网址是固定的,分别是文章、页面、分类、标签和用户,点进去就是真正的网址了,分别把他们提交给百度就行了。不错,又省了一个插件。

WordPress下解决百度不支持索引型sitemap的办法

最近在百度里发现博客里的最新文章都没有收录,登录百度搜索资源平台(站长平台)发现之前提交的sitemap的状态显示「索引型不予处理」。搜了下什么是「索引型sitemap」,得到结果是xml下不能嵌套xml,也就是说sitemap文件里显示的是最终的网址,而不能是子xml。

我的博客的sitemap是用Google XML Sitemaps插件生成的,百度之前也能用。我打开发现这个xml下还有子xml,也就是百度说的「索引型sitemap」。再搜索发现wordpress已经自带生成sitemap文件的功能了,于是停了Google XML Sitemaps插件,再访问https://www.jingfengshuo.com/wp-sitemap.xml就是wordpress生成的sitemap了。但是等等,为什么也是xml,不是文章网址呢。如下所示:

https://www.jingfengshuo.com/wp-sitemap-posts-post-1.xml
https://www.jingfengshuo.com/wp-sitemap-posts-page-1.xml
https://www.jingfengshuo.com/wp-sitemap-taxonomies-category-1.xml
https://www.jingfengshuo.com/wp-sitemap-taxonomies-post_tag-1.xml
https://www.jingfengshuo.com/wp-sitemap-users-1.xml

但是,上面这些网址是固定的,分别是文章、页面、分类、标签和用户,点进去就是真正的网址了,分别把他们提交给百度就行了。不错,又省了一个插件。

2022年7月4日星期一

我的WordPress插件(2022年)

最近虚拟主机商启用了主机的文件数量限制(Inode Limit),因为我买的是廉价主机,只给了我5000个inodes,也就是主机上面文件数量不能超过5000个。安装完wordpress之后文件数量近3000了,再装个主题theme和基本的插件plugs,文件数量就很容易超过5000了。我没钱去升级主机套餐,只能勉强用现在的。

现在的主机套餐是500M的存储空间,15G的月流量,博客所有的图片和文件都是外链的形式,用不了什么空间,访问人数有限,流量也够用,没想到现在开始限制文件数量了,只能继续精简wordpress的插件了。下面是2022年安装的插件列表,已经删除了WP Rocket、WP Super Cache、Yet Another Related Posts Plugin (相关文章)插件。

Akismet 反垃圾评论:这个必不可少,互联网上中有那么多垃圾评论,绝大多数是机器人留的。

Database Backup for WordPress:数据库备份插件,也是博客最重要的资产了,当然要定时备份一下。

WP-PageNavi:翻页导航,没有它只能点击“下一页”,觉得还是有用。

WP-PostViews:文章浏览数量,现在觉得用处不大,但是之前网站好多地方放了它产生的浏览数量排行,删除掉又要改网站布局了,先留着吧。

WP-Syntax:代码高亮,也就是为了把代码格式化,不至于看起来像文字,必备。

WP-UTF8-Excerpt:首页摘要输出,首页看起来不是全文输出,显得太长,必备。

WPtouch:网站移动端,什么都不做就能得到一套移动端的网站,暂时找不到替代的,先留着。

wordpress插件2022

最近虚拟主机商启用了主机的文件数量限制(Inode Limit),因为我买的是廉价主机,只给了我5000个inodes,也就是主机上面文件数量不能超过5000个。安装完wordpress之后文件数量近3000了,再装个主题theme和基本的插件plugs,文件数量就很容易超过5000了。我没钱去升级主机套餐,只能勉强用现在的。

现在的主机套餐是500M的存储空间,15G的月流量,博客所有的图片和文件都是外链的形式,用不了什么空间,访问人数有限,流量也够用,没想到现在开始限制文件数量了,只能继续精简wordpress的插件了。下面是2022年安装的插件列表,已经删除了WP Rocket、WP Super Cache、Yet Another Related Posts Plugin (相关文章)插件。

Akismet 反垃圾评论:这个必不可少,互联网上中有那么多垃圾评论,绝大多数是机器人留的。

Database Backup for WordPress:数据库备份插件,也是博客最重要的资产了,当然要定时备份一下。

WP-PageNavi:翻页导航,没有它只能点击“下一页”,觉得还是有用。

WP-PostViews:文章浏览数量,现在觉得用处不大,但是之前网站好多地方放了它产生的浏览数量排行,删除掉又要改网站布局了,先留着吧。

WP-Syntax:代码高亮,也就是为了把代码格式化,不至于看起来像文字,必备。

WP-UTF8-Excerpt:首页摘要输出,首页看起来不是全文输出,显得太长,必备。

WPtouch:网站移动端,什么都不做就能得到一套移动端的网站,暂时找不到替代的,先留着。

2022年5月11日星期三

cpanel的Inodes索引超出限额导致主机无法写入文件

不知道什么时候,登录cpanel面板发现状态栏里面多了一个Inodes索引,当时已经显示超出限额了,我也不知道是干什么的,没有管它。

前几天发现wordpress博客里的文章没办法发布,总是提示发布失败,最近也没有时间去管它,就放那里了。

今天正好有时间,登录WordPress后台更新WordPress版本的时候,总是提示这样那样的错误,就是更新不成功,我差点就要做手工更新了。然后发现下面还有一些插件也需要更新,想着要不先把插件更新一下吧,没想到这些插件也没办法更新,提示在网站目录中缺少tmp的文件夹。我通过文件管理器手工新建文件夹的时候,提示磁盘已满。我就纳闷了,明明主机存储还有好多的空间,为什么不让我新建呢?我是试着修改文件夹的权限,从755改成777还是不行。

最终没有办法我只能联系了网站主机的服务商。他说因为我的虚拟主机的Inodes索引超限超过30天,限制了文件的写入功能。他给我的解决办法是删除主机文件和更改主机套餐。我当然选择删除文件了。其实我的WordPress文件并不多,加起来也才100兆,删来删去并没有什么效果。最终发现有几个插件的文件比较多,把那几个插件删除以后Inodes索引就降了下来。然后更新WordPress版本和插件都成功了,发表文章也成功了,没想到是Inodes索引的原因导致博客的问题呀!

cpanel的Inodes索引超出限额导致主机无法写入文件

不知道什么时候,登录cpanel面板发现状态栏里面多了一个Inodes索引,当时已经显示超出限额了,我也不知道是干什么的,没有管它。

前几天发现wordpress博客里的文章没办法发布,总是提示发布失败,最近也没有时间去管它,就放那里了。

今天正好有时间,登录WordPress后台更新WordPress版本的时候,总是提示这样那样的错误,就是更新不成功,我差点就要做手工更新了。然后发现下面还有一些插件也需要更新,想着要不先把插件更新一下吧,没想到这些插件也没办法更新,提示在网站目录中缺少tmp的文件夹。我通过文件管理器手工新建文件夹的时候,提示磁盘已满。我就纳闷了,明明主机存储还有好多的空间,为什么不让我新建呢?我是试着修改文件夹的权限,从755改成777还是不行。

最终没有办法我只能联系了网站主机的服务商。他说因为我的虚拟主机的Inodes索引超限超过30天,限制了文件的写入功能。他给我的解决办法是删除主机文件和更改主机套餐。我当然选择删除文件了。其实我的WordPress文件并不多,加起来也才100兆,删来删去并没有什么效果。最终发现有几个插件的文件比较多,把那几个插件删除以后Inodes索引就降了下来。然后更新WordPress版本和插件都成功了,发表文章也成功了,没想到是Inodes索引的原因导致博客的问题呀!

2021年4月1日星期四

我的WP Super Cache配置摸索

1、启用缓存:简单模式 (推荐)

选简单的就行了,其实简单的也不简单了。

2、禁用登录访客的缓存。 (推荐)

登录之后查看网站不会受缓存的影响,比如你有发隐私文章,登录之后就能在前台看到了,不勾选这一项的话就看不到了。

3、不要为 GET 请求缓存。(地址结尾为?x=y)

GET 请求缓存的解释:当浏览器发了一条请求,会返回数据,浏览器会把返回的数据记录下来。当你再次发送该请求的时候,浏览器并不真的再发送这条请求,而是从历史记录里把这个数据读取取出来。

我们都希望博客里搜索的结果是最新的,建议勾选这一项。

4、压缩页面以便让来访者更快浏览。 (推荐)

建议勾选,压缩页面数据,加快页面加载速度。

5、缓存重建。当新缓存生成时调用缓存文件给匿名用户。 (推荐)

勾选。

6、缓存包含页面内容的 HTTP 头(headers)文件。

不勾选。

7、304浏览器缓存。 通过检查自浏览器上次请求页面后页面是否已更改来提高网站性能。 (推荐)

304浏览器缓存的解释:在Http请求中,返回代码是304的时候代表的是当前请求内容未发生变化,服务器不会返回网页内容,浏览器直接从缓存加载。

勾选。加快访问速度。

8、让已知用户匿名使他们浏览的内容是缓存文件。

如果网站具备注册登录功能,则必须要选中该选项,这样对于已登录用户访问的界面才不是被缓存的,而缓存的页面仅提供给未登录用户,两者看到的界面有所不同。否则会在用户登录后产生WP-Cache,同一页面会产生多份缓存文件,因此如果用户过多则会导致缓存文件过多。

9、启用动态缓存。需要使用PHP或传统模式缓存。

不勾选。

10、移动设备支持。

勾选。如果移动端和PC用的是2套主题,需要勾选。

11、移除 .htaccess 文件中的 UTF8/blog 字符集。

不勾选。

12、当有新文章或页面的发布或更新时清除之前的缓存文件。

不勾选。勾选的话每次发布文章就会清除全部缓存文件。

13、首页额外检查。 (极少数情况下会停止对首页的缓存) (推荐)

勾选。

14、当某页面有新评论时,只刷新该页面的缓存。

勾选。

15、在该页列出所有最新的缓存页面。

不勾选。

16、粗略的(Coarse)文件已锁定。您不需要这个文件,因为它将拖慢您的网站。

勾选。

17、稍后初始化。在 WordPress 加载后显示缓存文件。

不勾选。

到期时间和垃圾回收器

18、缓存超时时间

俺需要设置,有的人设置为0,缓存永远不过期,直到修改文件内容。永远不过期有个问题是缓存文件会越来越多,占用服务器空间。我这里设置为一个月:2592000

19、已被接受的文件名和拒绝的 URI(不要缓存例如下列格式的页面)

按需要选择。

20、已拒绝的用户代理(User Agent)

遇到下列浏览器标识不访问缓存页面,比如手机浏览器。

bot
ia_archive
slurp
crawl
spider
Yandex
iPhone
iPod
Android
BB10
BlackBerry
webOS
IEMobile/7.0
IEMobile/9.0
IEMobile/10.0
MSIE 10.0
iPad
PlayBook
Xoom
P160U
SCH-I800
Nexus 7
Touch

21、直接缓存的文件

按需填写。

22、预缓存模式

预缓存:缓存所有已发布的页面和文章。文章数量太大则不建议使用此功能。

23、CDN

我没有使用CDN,没有启用。

24、插件兼容

按需选择。如果你安装的是WPTouch Pro不要勾选WPTouch。

备注:WP Super Cache安装以后会明显感受到网页加载速度的提升,但是它的设置选项太多,好多地方不知道什么意思,上面的配置是参考网友的建议加上自己的理解。WP Super Cache对手机主题支持的不太好,总是电脑上没问题手机上有问题,摸索了好久才搞定。

我的WP Super Cache配置摸索

1、启用缓存:简单模式 (推荐)

选简单的就行了,其实简单的也不简单了。

2、禁用登录访客的缓存。 (推荐)

登录之后查看网站不会受缓存的影响,比如你有发隐私文章,登录之后就能在前台看到了,不勾选这一项的话就看不到了。

3、不要为 GET 请求缓存。(地址结尾为?x=y)

GET 请求缓存的解释:当浏览器发了一条请求,会返回数据,浏览器会把返回的数据记录下来。当你再次发送该请求的时候,浏览器并不真的再发送这条请求,而是从历史记录里把这个数据读取取出来。

我们都希望博客里搜索的结果是最新的,建议勾选这一项。

4、压缩页面以便让来访者更快浏览。 (推荐)

建议勾选,压缩页面数据,加快页面加载速度。

5、缓存重建。当新缓存生成时调用缓存文件给匿名用户。 (推荐)

勾选。

6、缓存包含页面内容的 HTTP 头(headers)文件。

不勾选。

7、304浏览器缓存。 通过检查自浏览器上次请求页面后页面是否已更改来提高网站性能。 (推荐)

304浏览器缓存的解释:在Http请求中,返回代码是304的时候代表的是当前请求内容未发生变化,服务器不会返回网页内容,浏览器直接从缓存加载。

勾选。加快访问速度。

8、让已知用户匿名使他们浏览的内容是缓存文件。

如果网站具备注册登录功能,则必须要选中该选项,这样对于已登录用户访问的界面才不是被缓存的,而缓存的页面仅提供给未登录用户,两者看到的界面有所不同。否则会在用户登录后产生WP-Cache,同一页面会产生多份缓存文件,因此如果用户过多则会导致缓存文件过多。

9、启用动态缓存。需要使用PHP或传统模式缓存。

不勾选。

10、移动设备支持。

勾选。如果移动端和PC用的是2套主题,需要勾选。

11、移除 .htaccess 文件中的 UTF8/blog 字符集。

不勾选。

12、当有新文章或页面的发布或更新时清除之前的缓存文件。

不勾选。勾选的话每次发布文章就会清除全部缓存文件。

13、首页额外检查。 (极少数情况下会停止对首页的缓存) (推荐)

勾选。

14、当某页面有新评论时,只刷新该页面的缓存。

勾选。

15、在该页列出所有最新的缓存页面。

不勾选。

16、粗略的(Coarse)文件已锁定。您不需要这个文件,因为它将拖慢您的网站。

勾选。

17、稍后初始化。在 WordPress 加载后显示缓存文件。

不勾选。

到期时间和垃圾回收器

18、缓存超时时间

俺需要设置,有的人设置为0,缓存永远不过期,直到修改文件内容。永远不过期有个问题是缓存文件会越来越多,占用服务器空间。我这里设置为一个月:2592000

19、已被接受的文件名和拒绝的 URI(不要缓存例如下列格式的页面)

按需要选择。

20、已拒绝的用户代理(User Agent)

遇到下列浏览器标识不访问缓存页面,比如手机浏览器。

bot
ia_archive
slurp
crawl
spider
Yandex
iPhone
iPod
Android
BB10
BlackBerry
webOS
IEMobile/7.0
IEMobile/9.0
IEMobile/10.0
MSIE 10.0
iPad
PlayBook
Xoom
P160U
SCH-I800
Nexus 7
Touch

21、直接缓存的文件

按需填写。

22、预缓存模式

预缓存:缓存所有已发布的页面和文章。文章数量太大则不建议使用此功能。

23、CDN

我没有使用CDN,没有启用。

24、插件兼容

按需选择。如果你安装的是WPTouch Pro不要勾选WPTouch。

备注:WP Super Cache安装以后会明显感受到网页加载速度的提升,但是它的设置选项太多,好多地方不知道什么意思,上面的配置是参考网友的建议加上自己的理解。WP Super Cache对手机主题支持的不太好,总是电脑上没问题手机上有问题,摸索了好久才搞定。

2021年3月1日星期一

优化WordPress网站的访问体验小结

很早以前我对博客采取了放任不管的态度,早已过了折腾的年纪了。这个博客对我来说只是记录一下生活,什么网站的样式、SEO优化、博客赚钱我一概不理会了。只要网站能访问能写文章就行,之前安装的优化的插件我也是能卸载就卸载了。

突然有一天发现博客的访问速度很慢,慢到有点无法忍受。网友给的指导建议是:启用缓存和Gzip。

我本来不想折腾,无意间发现一直在用的WP-Optimize插件自带这两个功能,只是没有启用而已(我一直用WP-Optimize插件来删除WordPress的文章版本修订和草稿的垃圾数据)。反正已经安装了就启用吧。启用以后发现网站加载速度快了很多。

前几天收到DNSPod的邮件,说我好久没用他们解析域名了,要把我的数据给清除下。我本来也不想理会,后来想着一不做二不休,改下解析服务吧。说实话改了之后也没感觉到速度快了多少。

这几天发现博客样式加载有问题,后来发现是https的网址有问题,http的网址正常,上网搜了一下说一个网址同时存在https和http对SEO不友好,会被认为是2个URL。其实我的主机商早就免费提供SSL的证书服务了,只是一直懒得折腾,想着反正网站能访问,管它用哪个网址呢。

算了,还是建了条规则,把http的网址跳转至https了。下面是Apache主机的方法,进入根目录下的public_html目录,然后新建或者修改.htaccess文件(可能需要在设置里勾选显示隐藏文件),增加内容如下:

RewriteEngine onRewriteBase /RewriteCond %{SERVER_PORT} !^443$RewriteRule ^.*$ https://%{SERVER_NAME}%{REQUEST_URI} [R=301,L]