创建像网站这样的交互式终端

可以创建一个看起来像终端的静态网站或投资组合。但是,如果访问网页的人可以像在真正样式的终端中一样键入一些命令并获得输出,那就更好了。

这些真实终端通常在GNU / Linux系统或Mac OSX上使用,但Windows用户也可以使用PowerShell cmd.exec或Windows 10 WSL(Linux的Windows子系统)使用,Windows 10仅是Windows上的Linux。对于任何系统管理员或更高级的用户,它都是最常用的工具。

如果您拥有一个可以为您提供终端模拟器外观和感觉的库,并且具有漂亮的API来创建命令,那么创建此类终端风格的网站就很容易,因此您无需从头开始创建。我们将使用JavaScript库jQuery Terminal,它提供了一个简单但功能强大的API,可以在任何网站上创建交互式终端。本文将向您展示如何在任何html网页上创建基于Web的简单交互式终端。

首先,您需要创建基本的html页面,其中将包含所有依赖项:

<!DOCTYPE html> 
<html> 
<head> 
<script src =“ https://code.jquery.com/jquery-3.3.1.min.js”> </ script> 
<script src =“ https:// unpkg.com/jquery.terminal/js/jquery.terminal.min.js“> </ script> 
<link rel =” stylesheet“ href =” https://unpkg.com/jquery.terminal/css/jquery.terminal .min.css“ /> 
</ head> 
<body> 
</ body> 
</ html>

然后在body标签中,可以使用第一个命令创建第一个终端:

<script> 
$('body')。terminal({ 
    hello:function(what){ 
        this.echo('Hello,'+ what + 
                  '. Welcome to this terminal。'); 
    } 
},{
    问候:“我的第一个终端' 
}); 
</ script>

如果键入“ hello Medium”,则输出如下所示:

终端画面

终端画面

简单的交互式终端网站

您可以添加到终端主题网站的另一个示例命令是显示图像。以下代码将添加命令“ cat”,该命令将显示小猫的图像。

$( '主体')端子。({
    猫:函数(){ 
        this.echo($( '<IMG SRC = “ https://placekitten.com/408/287 ”>')); 
    } 
});

您还可以在命令中添加参数。您可以添加两个参数来确定图像的特定大小(这将反过来创建不同的图像,这就是placekitten.com的工作方式)。

$('body')。terminal({ 
    cat:function(width,height){ 
        const img = $('<img src =“ https://placekitten.com/'+ 
                      width +'/'+ height +'” >'); 
        this.echo(img); 
    } 
});

如果您键入命令“ cat”并使用特定大小,这将为您提供以下输出:

图片发布

图片发布

终端显示猫的形象

注意:请注意,这里有jQuery $()调用包装器,您不仅回显html文本,而且回显jQuery对象。此限制是出于安全原因。您还可以将带有{raw:true}的选项对象用作回显的第二个参数。

有些命令是异步的,需要一些时间才能计算出来。图像的加载不是即时的,尤其是在慢速网络上。因此,您可以在命令处理异步请求时暂停终端。

$('body')。terminal({ 
    cat:function(width,height){ 
        const img = $('<img src =“ https://placekitten.com/'+ 
                      width +'/'+ height +'” >'); 
        img.on('load',this.resume); 
        this.pause(); 
        this.echo(img); 
    } 
},{
    问候:“我的第一个终端\ n' 
})

另一个选择是从函数返回一个承诺:

函数get_image(url){
    返回新的Promise(function(resolve,reject){ 
        const img = $('<img src =“'+ url +'”'/>'); 
        img.on('load',() => resolve(img)); 
        img.on('错误',拒绝); 
    }); 
}$('body')。terminal({ 
    cat:function(width,height){ 
        return get_image(' https://placekitten.com/'+ width + 
                         '/'+ height); 
    } 
},{
    问候:'我第一航站楼\ n' 
});

而且您不需要回显任何将处理承诺的终端。由于此功能,您可以使用访存并获取AJAX调用的输出:

$('body')。terminal({ 
    title:function(){ 
        return fetch('https://terminal.jcubic.pl')
            .then(r => r.text()).then 
            (html => html .match(/ <title>([^>] +)< \ / title> /)[1]); 
    } 
},{
    问候:“我的第一个终端\ n” 
});

该命令将显示库的首页标题。

注意:如果您希望将漂亮的ASCII Art作为欢迎消息,则可以使用figlet.js库,请参见此CodePen演示

如果要具有与GNU / Linux或MacOSX终端仿真器中相同的命令,可以在其中添加可选的参数和选项,则可以使用将解析选项并返回漂亮对象的函数。以下代码将向您展示如何做到这一点。

$('body')。terminal({ 
    title:function(... args){ 
        const options = $ .terminal.parse_options(args); 
        return fetch(options.url ||'https: //terminal.jcubic.pl ')
            .then(r => r.text()).then(
            html => html.match(/ <title>([^>] +)< \ / title> /)[1]); 
    } 
}, { 
    checkArity:否,
    问候:“我的第一终端” \ n' 
});

checkArity选项很重要。如果没有此选项,则当函数具有大于零的任意数量的参数时,终端将引发错误(这是ES6变量参数的工作方式,树点,终端认为函数接受0个参数)。

该命令的输出如下所示:

图片发布

图片发布

交互式终端会话,使用jQuery Terminal的命令很少。

当然,如果只有一个可选参数,则不需要解析选项,例如在这种情况下,您可以只使用一个参数url:

$('body')。terminal({ 
    title:function(url){ 
        return fetch(url ||'https: 
            //terminal.jcubic.pl ').then(r => r.text()).then 
            ( html => html.match(/ <title>([^>] +)< \ / title> /)[1]); 
    } 
},{ 
    checkArity:false,
    问候语:“ My First Terminal \ n' 
});

但是,如果需要更复杂的命令,则解析选项很有用。您可以像前面的示例一样使用GNU样式的长选项,但也可以使用-u等短选项,它将在options.u变量中访问。您可以在此Wiki页面上阅读有关解析命令和选项的更多信息。

您要添加的另一项功能是制表符完成。如果您这样设置终端(在文档中可以找到其他选项),那么您所需要的只是一个选项:

$('body')。terminal({ 
    title:function(... args){ 
        const options = $ .terminal.parse_options(args); 
        return fetch(options.url ||'https: //terminal.jcubic.pl ')
            .then(r => r.text()).then(
            html => html.match(/ <title>([^>] +)< \ / title> /)[1]); 
    } 
}, { 
    checkArity:false,
    完成:true,
    问候:“我的第一个终端\ n” 
});

现在,当您键入“ t”并按键盘上的Tab键时,它将完成命令“ title”,因此您无需手动键入整个命令。

您可能还需要一些“帮助”命令,其中将列出可用命令。

就是这样。以此为基础,您应该能够编写自己的简单终端。本文未讨论的jQuery Terminal库的功能包括:

您还可以看看的,在使用这个库创意的例子,网站或单个网页的大名单例子页。例如,其中包括动画或404页面,这些页面提供了您可以浏览的命令(例如Wikipedia文章或专业术语:印刷形式时也称为Hacker Dictionary,或者被黑客称为死树版本)。

最后,我想向您展示一个演示,为您提供复古外观的终端,就像计算机开始时的旧CRT显示器一样。

您可以在此CodPen演示中找到代码。您也可以在窗口中创建终端,不需要全屏显示。

BaiduSubmit:度娘WordPress结构化数据插件(改进版)

张戈博客曾多次提到一个会造成百度不收录问题的原因:如果网站存在实时推送机制(比如安装了百度官方推出的 BaiduSubmit 插件),那么发布文章后,在百度收录之前这段时间内,无论如何都不要再去更新文章内容了,因为每次提交更新都会触发 BaiduSubmit 的实时推送机制,通知百度内容更新了!

在百度收录之前,如果频繁向百度推送更新通知,文章很可能就会被百度丢入沙盒,短时间内不会在百度搜索展现该条收录!

个人大胆猜测,造成这种现象的根本原因是收录之前,如果频繁更新内容,百度会认为这个内容是不稳定的。这个机制估计是百度出于用户体验考虑,百度希望用户看到的内容是和搜索到的一样,而不是百度收录了 A 内容,就因为你中途改成了 B 内容,导致用户通过 A 关键字搜索,却没有得到预期的结果!

因此,网站在发布文章之后,稳定收录并展示之前,切忌频繁修改内容!

但是,我作为一名中度强迫症患者,只要看到文章有错别字,或者排版等瑕疵,我都会立即修改!相信和我一样的朋友,肯定不在少数!

下面就分享一下解决办法。

一、关闭实时推送

①、关闭 Baidusubmit 实时推送

如果不想每次更新文章都触发推送机制,那么最简单的方法就是在插件后台关闭实时推送即可:

这个方法是最简单的,但是存在一定缺憾:关闭实时推送之后,新发布文章也不会再推送给百度了。只会在百度提交一份 sitemap 数据,让百度定时抓取。

在博客没有开通 sitemap 权限的情况下,那这个插件就相当于在百度提交了 sitemap 数据(上图只有在开通了 sitemap 权限的情况下才可以看到)。

当然,如果你不怕麻烦,也可以在发布新文章的时候启用实时推送,然后在手动关闭即可。

②、关闭 WordPress 实时推送

除了这个插件会实时推送数据,WordPress 其实还自带了一个更新通知功能:

直接将百度的 PING 服务删除即可,其他的删不删应该都没关系。

二、修改插件机制

相比于第一种方法,下面的方法就更加合理:只有在文章发布的时候推送数据到百度,而后续更新文章则不会触发插件的推送机制,强烈推荐使用!

方法①、当网站未禁用修订功能时,可通过修订判断来终止插件推送:

WordPress 的修订功能默认是打开的,那么我们就可以用下面这个语句来判断是否是更新动作。

 if (wp_is_post_revision($postid)) return;   //更新文章不往下执行,直接返回

修改方法:

编辑 baidusubmit 插件下的 main.php,找到 static function publishPost($postid) { ,在之后添加以上代码即可:

 static function publishPost($postid)
    {
        if (wp_is_post_revision($postid)) return; //更新文章时不推送
        require_once dirname(__FILE__) . DIRECTORY_SEPARATOR . './inc/sitemap.php';
        add_post_meta($postid, 'Baidusubmit', 1, true);
        $schema = BaidusubmitSitemap::genSchemaByPostId($postid, $xpost);
        if ('publish' != $xpost->post_status || '' != $xpost->post_password) {
            self::deletePost($postid);
            return;
        }
/* 以下代码略 */

Ps:可能你会疑问,如何判断已修改成功,更新时插件是否依然在推送数据?有个很简单的判断办法:更新文章时,如果有推送数据,那么花费的时间将比不推送数据要长的多!差距非常明显!

当然,如果你无法确定是否生效,建议使用下面这种方法,绝对可靠!

方法②、当网站禁用了修订功能时,可通过自定义栏目来终止插件推送:

我在测试上面的代码时,发现根本不生效!看了半天,才发现我的博客曾经把修订功能给禁用了!查看修订功能是否被禁用,只要打开网站根目录下的 wp-config.php,查看是否存在一下代码:

/** 禁用自动修订版本 **/
define('WP_POST_REVISIONS', false);
define('AUTOSAVE_INTERVAL', 36000);

禁用修订功能是为了节省数据库主键,最大程度保证文章 ID 的连续性,估计这样设置过的博客也不在少数。

既然禁用了修订功能,那第①个方法就无法使用了!这时候,我们可以借助 WordPress 的自定义栏目功能来解决这个问题。

原理很简单:文章首次发布时,会向百度推送数据,并且在对应文章中新增一个自定义栏目:Baidusubmit=1

更新文章的时候,插件先判断自定义栏目,如果 Baidusubmit=1,则不再推送,从而解决了重复推送问题。

修改方法:

还是编辑 baidusubmit 插件下的 main.php,找到 static function publishPost($postid) {,在之后添加代码:

//如果检测到Baidusubmit=1,则返回
if(get_post_meta($postid,'Baidusubmit',true) == 1) return;
//若推送到百度,则新增自定义栏目
add_post_meta($postid, 'Baidusubmit', 1, true);

最终如图所示:

发布文章之后,文章编辑界面的自定义栏目中将出现如下键值:

后续,如果想让插件再次向百度推送文章,只需要将这个值改为 0 或其他数值即可。

三、插件下载地址

考虑到代码盲站长,特将以上 2 种修改后的 baidusubmit 插件打包上传,请根据实际需求下载安装即可:

博客未禁用修订功能,请下载【插件①】,不清楚的推荐下载【插件②】

下载地址

安装时,先删除原有的 baidusubmit 插件,然后上传安装即可。

SEO技巧:Shell脚本自动提交网站404死链到搜索引擎

wordpress设置404页面的方法

wordpress是很多新手站长搭建个人博客最喜爱的程序,但是很大新手站长发现在众多模板中很少有404页面,但是404页面是WWW网站访问比较经常出现的错误。最常见的出错提示:404 NOT FOUND。

    

404页面的目的有两个,其一是为了良好的用户体验;使用户发现错误页面之后可以去网站其他位置继续浏览,比如我们可以在404页面上设置一个网站首页,引导用户继续浏览下去。其二是在搜索引擎发现此网页时,网页需要反馈一个正确的状态码,当搜索引擎蜘蛛在请求某个URL时得到“404”状态回应时,即知道该URL已经失效,便不再索引该网页,并向数据中心反馈将该URL表示的网页从索引数据库中删除。

如果站长的服务器是LINUX系统,那linux系统之下设置404分方法如下:

第一步:在.htaccess文件中加入如下语句:ErrorDocument 404 /404.html

如果需要修改的网站目录下没有.htaccess文件自己建立一个即可

 

第二步,自己建立一个404.html文件,放到网站的根目录就可以了。

也可以使用其他后缀,只要.htaccess中指定同样的文件就可以,例如404.php,404asp

如果站长的服务是WIN主机的话,那linux系统之下设置404分方法如下:

在你的wordpress中找到wp-content/themes/你使用的模板/404.php

如果没有404.php的话那么我们建立一个404.php.代码如下:

<?php get_header(); ?>

<div id=”container” class=”article”>

<div class=”content”>

<?php _e(‘我勒个去,你找的这个页面现在居然不存在。’, ‘404yemian’); ?>

</div>

<?php get_sidebar(); ?>

</div>

<?php get_footer(); ?>

这样你的wordpress就有了自己的404页面了,站长自己也可以设计有个性的404页面!

通常来说大多数人认为换主题会影响SEO,实际上只要你把工作都做到位了,是没有任何问题的。比如,换主题后你得仔细检查标题和描述等内容是否发生改变、换主题后是否带来了大量的404页面等。当然,更细微的可能是换主题之后,网站的内链网络也发生了微妙的改变,但是整体的影响较小。SEO技巧:Shell脚本自动提交网站404死链到搜索引擎总之,张戈博客这次更换主题基本上没有看到明显的SEO影响,反而出现几个新的关键词。好了,题外话到此结束,下面分享一下从Nginx日志分析并生成能提交到搜索引擎的死链文件的Shell脚本。

一、前因后果

今天在看百度站长平台的抓取频次的时候,发现最近抓取次数有所下滑,并且平均响应时间也有所上升,感觉和最近频繁折腾主题以及访问量增加有所关系:

SEO技巧:Shell脚本自动提交网站404死链到搜索引擎

这个问题倒是好解决,等主题稳定了,页面静态缓存文件也就不会频繁被手工删除,整个网站的抓取响应时间应该就能回到正常水平。

再往下看,却发现网站抓取中出现的404数据也呈上升趋势:

SEO技巧:Shell脚本自动提交网站404死链到搜索引擎

实际上,张戈博客以前是手动提交过死链文件的,但后来没时间也就没去搭理更新了。看来这个工作还得重新做起来,并且实现自动化才行了。

二、Shell脚本

说做就做,简单的写了个 Shell 脚本就搞定了!

脚本名称:网站死链生成脚本

脚本功能:每天定时分析网站前一天的 nginx 日志, 然后提取状态码为404并且UA为百度蜘蛛的抓取路径,并写入到网站根目录下的 death.txt 文件,用于提交百度死链。

脚本代码

#!/bin/bash
#Desc: Death Chain File Script
#Author: ZhangGe
#Blog: https://zhang.ge/5038.html
#Date: 2015-05-03
#初始化变量
#定义蜘蛛UA信息(默认是百度蜘蛛)
UA=‘+http://www.baidu.com/search/spider.html’
#前一天的日期(nginx日志)
DATE=`date +%Y-%m-%d -d “1 day ago”`
#定义日志路径
logfile=/home/wwwlogs/zhang.ge_${DATE}.log
#定义死链文件存放路径
deathfile=/home/wwwroot/zhang.ge/death.txt
#定义网站访问地址
website=https://zhang.ge
#分析日志并保存死链数据
for url in `awk -v str=${UA} ‘$9==”404″ && $15~str {print $7}’ ${logfile}`
do
grep -q $url ${deathfile} || echo ${website}${url} >>${deathfile}
done

使用说明:

①、脚本适用于每天都做了日志切割的Nginx,没有做的朋友可以参考博客之前的文章:

nginx日志切割及7天前的历史日志删除脚本

②、将代码保存为 shell 脚本,比如 deathlink.sh,然后如下建立任务计划:

#执行如下命令编辑任务计划
[root@Mars_Server ~]# crontab -e
#每天凌晨1点执行此脚本(注意脚本的实际路径)
0 1 */1 * * /root/death.sh >/dev/null 2>&1
#按下ESC,然后键入 :wq 保存并退出

③、执行后,将在网站根目录生成死链文件:death.txt,可以浏览器访问看看内容,比如:

https://zhang.ge/death.txt

④、前往立即前往提交这个死链文件即可:

SEO技巧:Shell脚本自动提交网站404死链到搜索引擎

这样一来,系统会每天执行脚本,将昨天的百度蜘蛛爬到的404路径保存到网站根目录下的 death.txt,以备百度死链抓取工具前来抓取。

效果截图:

下面贴上这几天死链抓取(百度定时抓取,无需人工干预)及处理情况,效果还是非常明显的:SEO技巧:Shell脚本自动提交网站404死链到搜索引擎

值得说明的是,这些死链记录是累加的,已保存的死链数据,就算百度蜘蛛不爬了也会继续保存,需要人工清理,不过一般不清理也没啥问题。

注意事项:

①、如果你的 nginx服务 并没有配置相应的 access 日志,请自行在 server 下添加所需网站的 access 日志,否则脚本无法使用;

②、脚本适用的access日志格式如下:

log_format access $remote_addr$remote_user [$time_local] “$request” ‘ $status $body_bytes_sent$http_referer” ‘ ‘”$http_user_agent$http_x_forwarded_for;

 

如果和你的不一样,则需要修改脚本中的awk指定的域(即$9、$15以及$7)。

三、其他拓展

①、如果你之前没有做过 Nginx 日志切割,那么可以直接用下面这个脚本来一次性搞定:

#!/bin/bash
#Desc: Cut Nginx Log and Create Death Chain File
#Author: ZhangGe
#Blog: https://zhang.ge/5038.html
#Date: 2015-05-03
#①、初始化变量:
#定义access日志存放路径
LOGS_PATH=/home/wwwlogs
#定义蜘蛛UA信息(默认是百度蜘蛛)
UA=‘+http://www.baidu.com/search/spider.html’
#定义网站域名(需要先给相应的网站以域名形式配置了nginx日志,比如zhang.ge.log)
DOMAIN=zhang.ge
#定义前一天日期
DATE=`date +%Y-%m-%d -d “1 day ago”`
#定义日志路径
logfile=/home/wwwlogs/zhang.ge_${DATE}.log
#定义死链文件存放路径
deathfile=/home/wwwroot/zhang.ge/death.txt
#定义网站访问地址
website=https://zhang.ge
#②、Nginx日志切割
mv ${LOGS_PATH}/${DOMAIN}.log ${LOGS_PATH}/${DOMAIN}_${DATE}.log
kill -USR1 `ps axu | grep “nginx: master process” | grep -v grep | awk ‘{print $2}’`
#可选功能: 自动删除30天之前的日志,可自行修改保存时长。
cd ${LOGS_PATH}
find . -mtime +30 -name “*20[1-9][3-9]*” | xargs rm -f
#③、网站死链生成(百度专用)
#分析日志并保存死链数据
for url in `awk -v str=${UA} ‘$9==”404″ && $15~str {print $7}’ ${logfile}`
do
grep -q $url ${deathfile} || echo ${website}${url} >>${deathfile}
done

②、其他WEB服务器,比如 Apache 或 IIS,只要参考脚本思路,修改成实际的路径或日志字段,同样可以写一个相同功能的 Shell 或 Batch 脚本,有需求的朋友自己去研究折腾吧!

好了,本文暂时就分享这么多,希望对你有所帮助!

相关文章

分享一个Nginx反向代理的另类应用案例

5月2日 · 2019年

分享一个Nginx正向代理的另类应用案例

1月20日 · 2019年

解决网站404页面返回200状态码问题

9月8日 · 2018年

74 条回应

昵称

  1. 你好中国2017-4-9 · 21:02

    你真的太强悍了!百度做到 pr5了!!学习收藏了!

  2. 美剧天堂网2017-4-24 · 17:20

    个人博客做到那么高的权重很不容易呀

  3. xiaochou2017-4-30 · 9:25

    签到成功!签到时间:上午9:24:55,每日签到,生活更精彩哦~

  4. 电影天堂2017-6-3 · 11:07

    强悍,大神不愧为大神

  5. 格雷弗动平衡仪2017-7-11 · 16:24

    文章写的不错,学习到了很多。

  6. 声学成像仪2017-7-13 · 9:01

    很棒~写的很详细,可以学到很多

  7. 八一中文网2017-11-20 · 15:48

    学到了 404 可以这样处理

  8. 猢狲2017-11-27 · 11:14
    root@debian:~# /data/shell/deathlink.sh
    awk: run time error: regular expression compile failed (missing operand)
    +http://www.baidu.com/search/spider.html
    FILENAME=“/data/wwwlogs/www.123.com_nginx_2017-11-26.log” FNR=17 NR=17

    请教 运行脚本提示这个错误是什么意思啊

    • Jager2017-12-1 · 21:17

      @猢狲代码贴过去不对吧,要么就是系统兼容性问题,玩网站、玩服务器还是用centos比较好,大部分教程基于centos写的,你这个是debian

  9. 网站建设2018-5-7 · 11:50

    写的很详细很不错,404页面在网站中也是很重要的

  10. 米扑博客2018-5-7 · 17:24

    每一篇博客,都是精品,值得品鉴 😀

  11. 博主你好,问个问题2018-8-13 · 11:48

    宝塔面板生成不了404文件文档,代码如下

    #!/bin/bash
    #①、初始化变量:
    #定义access日志存放路径
    LOGS_PATH=/www/wwwlogs
    #定义蜘蛛UA信息(默认是百度蜘蛛)
    UA=‘+http://www.baidu.com/search/spider.html’
    #定义网站域名(需要先给相应的网站以域名形式配置了nginx日志,比如zhang.ge.log)
    DOMAIN=csgdzx.com
    #定义前一天日期
    DATE=`date +%Y-%m-%d -d “1 day ago”`
    #定义日志路径
    logfile=/www/wwwlogs/csgdzx.com_${DATE}.log
    #定义死链文件存放路径
    deathfile=/www/wwwroot/csgdzx.com/badlinks.txt
    #定义网站访问地址
    website=https://www.csgdzx.com
    #②、Nginx日志切割
    mv ${LOGS_PATH}/${DOMAIN}.log ${LOGS_PATH}/${DOMAIN}_${DATE}.log
    kill -USR1 `ps axu | grep “nginx: master process” | grep -v grep | awk ‘{print $2}’`
    #可选功能: 自动删除30天之前的日志,可自行修改保存时长。
    cd ${LOGS_PATH}
    find . -mtime +30 -name “*20[1-9][3-9]*” | xargs rm -f
    #③、网站死链生成(百度专用)
    #分析日志并保存死链数据
    for url in `awk -v str=${UA} ‘$9==”404″ &amp;&amp; $15~str {print $7}’ ${logfile}`
    do
    grep -q $url ${deathfile} || echo ${website}${url} &gt;&gt;${deathfile}
    done
  12. 博主你好,问个问题2018-8-13 · 12:03

    补充一下上一句评论:
    宝塔面板生成不了404文件文档,
    日志格式如下

    123.125.71.28 – – [27/Jul/2018:17:14:59 +0800] “GET / HTTP/1.1” 404 108238 “-“ “Mozilla/5.0 (Linux;u;Android 4.2.2;zh-cn;) AppleWebKit/534.46 (KHTML,like Gecko) Version/5.1 Mobile Safari/10600.6.3 (compatible; Baiduspider/2.0; +http://www.baidu.com/search/spider.html)”

    脚本代码如下

    #!/bin/bash
    #①、初始化变量:
    #定义access日志存放路径
    LOGS_PATH=/www/wwwlogs
    #定义蜘蛛UA信息(默认是百度蜘蛛)
    UA=‘+http://www.baidu.com/search/spider.html’
    #定义网站域名(需要先给相应的网站以域名形式配置了nginx日志,比如zhang.ge.log)
    DOMAIN=csgdzx.com
    #定义前一天日期
    DATE=`date +%Y-%m-%d -d “1 day ago”`
    #定义日志路径
    logfile=/www/wwwlogs/csgdzx.com_${DATE}.log
    #定义死链文件存放路径
    deathfile=/www/wwwroot/csgdzx.com/badlinks.txt
    #定义网站访问地址
    website=https://www.csgdzx.com
    #②、Nginx日志切割
    mv ${LOGS_PATH}/${DOMAIN}.log ${LOGS_PATH}/${DOMAIN}_${DATE}.log
    kill -USR1 `ps axu | grep “nginx: master process” | grep -v grep | awk ‘{print $2}’`
    #可选功能: 自动删除30天之前的日志,可自行修改保存时长。
    cd ${LOGS_PATH}
    find . -mtime +30 -name “*20[1-9][3-9]*” | xargs rm -f
    #③、网站死链生成(百度专用)
    #分析日志并保存死链数据
    for url in `awk -v str=${UA} ‘$9==”404″ &amp;&amp; $15~str {print $7}’ ${logfile}`
    do
    grep -q $url ${deathfile} || echo ${website}${url} &gt;&gt;${deathfile}
    done
  13. 知识共享网2019-7-6 · 15:33

WordPress无法在线安装插件和主题,无法更新wordpress版本

具体情况:在主题和插件的页面,没有显示安装插件的按钮,也无法进行更新,在仪表盘也没有更新页面。 一开始以为是文件权限问题,结果发现并不是这个原因。

解决方法:检查 wp-config.php 文件是否有以下2行,删除或改为 false。

define( 'DISALLOW_FILE_EDIT' , true );
define( 'DISALLOW_FILE_MODS' , true );
另:WordPress无法在线安装主题和插件的解决办法

最近有几位朋友询问倡萌,WordPress无法在线安装主题和插件,无法查看热门插件和主题,提示“发生了未知错误。有可能是因为 WordPress.org 工作不正常,或本地配置有误。如果问题持续存在,请浏览中文支持论坛。”

询问了一下,一般是由于使用的国内主机封了某些DNS导致的。

如果你的是VPS或服务器,比如阿里云服务器,可以使用下面的命令打开resolv.conf:

1 vi /etc/resolv.conf

修改为google的DNS或其他

1 2 nameserver 8.8.8.8 nameserver 8.8.4.4

保存即可;

如果是虚拟主机,请自己联系你的主机商,要他们提供解决方案。

wordpress技巧篇之怎么使每篇文章针对百度蜘蛛做出检测而快速得到文章的收录情况

作者 / 时间 2019-02-03 10:11:46

站长朋友们都知道网站优化对于新站而言是多重要,不仅是新站就是老站同等重要,只有网站优化好了才会有流量,有流量才可能转化为销量进而给站长带来盈利。很多站长在起初建站就会把网站优化都设计好这样方便后期的整体优化,今天有位站长朋友使用的是php空间安装的wordpress博客程序,由于网站搭建好了之后每天发布的文章比较多,只能在站长工具中看到文章每天都有收录,可是具体收录哪些文章看的不是很具体,于是这位站长朋友想如果能让收录的文章在首页显示出来就更好了,意思就是在每篇文章标题后面显示百度已收录和百度未收录。如下图1:那么该如何实现呢?无忧主机小编经过研究之后找到了实现的方法,具体来整理下吧。 1、首先登陆博客网站后台,找到左侧外观–主题–编辑–找到右侧functions.php模板函数,如下图2:2、点击模板函数打开,在最下面?>前面加入以下代码:

function 51php_bdsl($url){

$url='http://www.baidu.com/s?wd='.$url;

$curl=curl_init();

curl_setopt($curl,CURLOPT_URL,$url);

curl_setopt($curl,CURLOPT_RETURNTRANSFER,1);

$rs=curl_exec($curl);

curl_close($curl);

if(!strpos($rs,'抱歉,没有找到')){

return 1;

}else{

return 0;

}

}

如下图3:3、做了上面的步骤还是需要到您的模板中去调用才可以实现这样的功能,具体的实现代码如下: <?php

if(php_bdsl(get_permalink()) == 1)

echo "百度已收录";

else

echo "百度未收录";

?>

上面的代码根据您的喜好加入在不同的地方,无忧主机小编喜欢加上index.php中的<?php get_template_part(‘content’); ?>下面,即可显示出来。 反正就是完成以上几个步骤就可以完成您的这个功能。 以上是无忧主机独立IP虚拟主机为您带来的介绍。本文地址:https://www.51php.com/wordpress/28267.html

WordPress PC桌面客户端

这款工具并不是Win10 UWP通用版本,而是一个Win32应用,在功能上更像是一个简单的网页包装,不过还是提供了一些实用功能。

WordPress PC桌面客户端提供以下功能:

• 在“我的网站”面板中可以管理多个站点,包括WordPress.com站点以及自托管站点;

• 提供新的WordPress.com编辑器,包含应用内预览以及草稿自动保存功能;

• 阅读器提供关注和阅读你喜欢站点的功能,全新的“发现”功能为你推荐来自所有WordPress站点的优质内容;

• 分析和统计功能可以让你了解站点和文章的访问量等信息;

• 应用内通知集中展示博客评论、喜欢、关注状态。

感兴趣的用户可以点此下载WordPress桌面客户端。(via: Microsoft-News)

WordPress 提示”在裁剪您的图像时发生了错误”解决方案

在 WordPress 中使用裁剪图片功能时,出现:“在裁剪您的图像时发生了错误” 或者 “There has been an error cropping your image.”

原因:

缺少 PHP GD 库

Ubuntu下运行:

sudo apt-get install php5-gd

or

sudo apt-get install php7.0-gd

CentOS下运行:

yum install php-gd

安装完以后重启 Apache 或 Nginx 即可

本文转载自:https://blog.csdn.net/yilovexing/article/details/78854422

WordPress截取字符串函数wp

发布时间:2019-03-17  编辑:杨雨个人博客网站   点击:

WordPress有个截取字符串的函数wp_trim_words(),在标题、摘要等地方都可以用到,与DedeCMS的cn_substr()同样功能。使用方法也非常简单:

用法:

<?php wp_trim_words( $text, $num_words = 55, $more = null ); ?>

参数

$text
(string) (required) 要修剪的文本。
Default: None

$num_words
(integer) (optional) 保留的单词个数。
Default: 55

$more
(string) (optional) 修剪之后的文本后面跟的字符
Default: ‘…’ 就是 …

返回值

(string)
修剪之后的文本

实例:

<?php

echo wp_trim_words( get_the_title(),50);// 截取50字的文章标题

echo wp_trim_words( get_the_excerpt(),100);// 截取100字的文章摘要

echo wp_trim_words( get_the_content(),500);// 截取500字的文章内容

本文地址:http://itbyc.com/cms/wordpress/19168.html
转载请注明出处。

导入WordPress Avada主题Demo的方法

安装演示提供的网页,文章,图片,主题选项,窗口小部件,滑块等。重点:包括插件需要你安装演示之前,必须安装并激活。请检查“系统状态”标签,以确保您的服务器满足成功导入的所有要求。需要注意的设置将以红色列出。这里查看更多信息。

安装必需和建议的插件要导入演示;Fusion Core, Revolution Slider, Layer Slider, WooCommerce, and Contact Form 7 Avada 经典演示需要的所有插件。代理,应用程序,咖啡厅,时尚和旅游的演示只需要融合的核心和联系表7插件。

安装并激活All-in-One WP Migration迁移插件。

下载您所需的演示备份文件到您的计算机。

在左侧导航栏中找到 All-in-One WP Migration -> Import page.

点击导入从按钮,然后选择文件。选择你刚刚下载的演示备份文件。

一旦导入完成后,您会收到一条导入过程将覆盖整个站点数据库的警告。点击Continue按钮继续。

一旦你成功导入数据,您将收到一条成功的消息。然后,您将自动注销,你会被要求更新WordPress的数据库。点击更新WordPress的数据库按钮。

一旦更新完成后,单击继续。您需要使用下面的用户名(admin)/密码(admin)信息重新登录到WordPress管理区

一旦重新登录,您可以更改您的用户名/密码,回到你的唯一凭证。 全做完了!

优化设置wordpress网站固定链接有利于SEO

那么wordpress网站到底选择哪一种固定链接最好呢?以我的建站经验来说,我认为wordpress推荐的几种固定链接也都不太理想,还是建议用自定义的固定链接形式比价好。wordpress设置里面是允许自定义链接形式,以提高美感、可用性和向前兼容性。(需要主机支持伪静态)。

下面先来看看一些网上常用的WP固定链接URL格式:

1、/%year%/%monthnum%/%day%/%postname%/

2、/%year%/%monthnum%/%postname%/

3、/%year%/%monthnum%/%day%/%postname%.html

4、/%year%/%monthnum%/%postname%.html

5、/%category%/%postname%.html

6、/%post_id%.html

7、/%post_id%/

8、/%postname%/

9、/%postname%.html

以上这些固定链接有利有弊,总的来说wordpress设置固定链接时,应该尽量注意一下几点:

1、不要让日期出现在固定链接里面。

这基于两个方面的考虑。一是如果数字出现在固定链接里面,等于提醒搜索引擎,这是很旧的内容了,没必要再爬一遍了。另外一个原因是,假如你要修改文章的日期重新发布的话,链接地址就变了,也就是意味着你的反向链接,PR 等等都没有了。

2、不要让分类的链接出现在固定链接里面。

这一点是很多人都会忽略的地方。让分类出现在固定链接里面有两个缺陷:一是一篇文章如果选择了多个分类的话,则会出现多个链接地址,这很容易造成因为重复内容而被搜索引擎惩罚;二是有可能会造成关键词堆砌而被搜索引擎惩罚。

3、链接不要太深。

这一点经常看到。很多wordpress 用户的固定链接是年/月/日/分类名/文章名。这种过于深的固定链接对搜索引擎是非常不友好的。

4、链接中不要出现中文。

虽然现在的搜索引擎已经能识别URL地址里面的中文字符,但无论是从美观上,还是从wordpress 优化的角度来看,都是非常差的。

5、文章最后可以加一个.html

一是伪静态URL搜索引擎容易收录,二是用户已经习惯了文章网址带.html了。另外虽说搜索引擎能识别中文链接,但是对于优化的角度来说,不建议使用中文。

wordpress固定链接设置的一些参数:
%year%:基于文章发布的年份,比如2010;
%monthnum%:基于文章发布的月份,比如01;
%day%:基于文章发布当日,比如06;
%hour%:基于文章发布小时数,比如23;
%minute%:基于文章发布分钟数,比如43;
%second%:基于文章发布秒数,比如33;
%postname%:基于文章的postname,其值为撰写时指定的缩略名,不指定缩略名时是文章标题;
%post_id%:基于文章post_id,比如48;
%category%:基于文章分类,子分类会处理成“分类/子分类”这种形式;
%author%:基于文章作者名。

将上述参数进行组合,即可得到wordpress的固定链接形式。


•/%year%/%monthnum%/%day%/%postname%/

•/%year%/%monthnum%/%postname%/

•/%year%/%monthnum%/%day%/%postname%.html

•/%year%/%monthnum%/%postname%.html

•/%category%/%postname%.html

•/%post_id%.html

那么我们到底选择什么样的wordpress固定链接最好呢?我主要推荐2种形式的固定链接URL:

一、 /%postname%.html

SEO效果最好的自定义固定链接结构就是文章名字链接,特别是英文网站更是如此。这种连接有利于SEO优化,但是并不适用于每个人,设置起来也麻烦点,文章多了后URL容易重复。

二、/%post_id%.html

相比之下这种文章id的固定链接URL,十分简短、好记、易用,也易于复制网址。而且文章多了之后也不怕URL重复。强烈推荐大家选择这种wordpress固定链接URL格式。