lamp+wordpress

WordPress SEO指南

WordPress应该是被使用最多的CMS系统,记得以前看到过报道,全世界20%以上的网站用的是WP。虽然最初是作为博客写作CMS发布的,但现在不仅博客使用,新闻、杂志、门户类网站也用,简单的电子商务网站也能用WP,最近越来越多企业网站也开始使用WordPress。

WordPress的优势太多了:

1.开源、免费但功能强大

2.内容层和展现层分离,因而模板极为丰富,又可以用于各种类型网站

3.简单、灵活、开放、标准化,有强大的插件库,实现各种功能

4.安装简单,使用也很简单

5.版本更新频繁,但升级十分简单

6.开发者社群规模够大,某项功能即使不会做又找不到插件,也能找到开发者帮你写。

虽然WordPress并不能说是完美搜索引擎友好的,但至少是友好度非常高的CMS之一,在各种插件帮助下和适当设置后, WordPress搭建的网站是可以做到比较完美SEO的。

这篇WordPress SEO指南就简单讨论一下优化WordPress网站的几个要素。相同的考虑也适用于其它博客系统。这里只谈技术性优化,关于博客的运营、市场研究、文章写作等问题,可以参考以前翻译的博客SEO指南。

标题标签和描述标签

老版WordPress的缺省帖子标题标签是这个格式的:博客名称 – 帖子标题,需要改为:帖子标题 – 博客名称。

这个修改通常是由下面推荐安装的SEO插件自动实现的,几个流行的WP SEO插件都一定有这个功能。不安装插件的话,也可以在模板文件中自己修改,以前我刚刚开始用WordPress写博客时还没有现在这些插件,都是自己修改模板,wp_title(帖子标题)和bloginfo(‘name’) (博客名称)两个顺序调换一下就行了:

< title >< ? php wp_title(); ? > – < ? php bloginfo(‘name’); ? > < /title>或者bloginfo(‘name’)也可以直接硬编码,写上博客名称,少一次php执行,还能写成与设置的博客名称不一样的。

描述标签就是写帖子时摘要(Excerpt)中填写的内容,这个摘要内容也就是首页、栏目页帖子标题下面的简短介绍文字。通常我会从帖子前两段文字中摘一两句话,并在文字上稍微改动一下,尽量避免首页、栏目页和实际帖子页面的重复内容。

如果安装了SEO插件,可以单独写不同于摘要的描述标签,一般我不使用,没有太大必要。

关键词标签可以直接删除,不管对用户还是对搜索引擎,目前都没用,以后也看不出变得有用的可能性。

文章内部链接

两种情况,一是文章结尾处或侧栏中显示的相关帖子,这个肯定是插件实现,比如我用的是Related Post。相关文章对用户和搜索引擎都有好处,几乎是必须的设置。通常设定显示5-10篇相关文章。

二是贴子正文中链接到其它相关帖子,是站内链接优化的重要部分。我博客里用的比较多,有很多读者也问过我是怎么加的帖子内链接,看到网上有人说我肯定是用插件,其实不是,我就是人工加的。也有插件可以实现,自动在指定关键词加上指定链接, 如SEO Smart Links,不过我并不建议,虽然插件可以设置一组关键词,可以限制生成链接的次数,但还是不可能像人工那样灵活、自然。人工加基本上是随机的,所以也是最自然的。

人工加内部链接时重要的规则就是别给自己设定规则,不要脑子里有一根弦:“遇到这个关键词,我要链接到这里,每篇帖子只加一次。”我的做法就是随便加,想起来觉得合适就加,没想起来就不加。

网站地图

XML版网站地图是必须要有的,也有插件可以实现,如我用的 Google XMLSitemaps,虽然名字里带Google,但生成的sitemaps是所有搜索引擎通用的。Sitemap插件很多,基本上都一样。

网页版网站地图没有太大必要,可放可不放。其它类型网站也同样,网站结构没问题的话,是否放页面版网站地图,视用户体验而定,不用考虑SEO。

模板的选择和修改

WP官网有大量模板可以下载,搜索“wordpress模板”,也有很多免费、付费的模板网站。选择模板时建议考虑几个方面:

好看,设计风格符合行业。我个人喜欢简单的视觉设计,如读者所见,连个图片都没有。

必须是响应式设计,必须有面包屑导航;功能尽量简单,代码简洁,打开速度快。

页面代码如H1、H2标签等使用正确,如帖子标题应该是H1。选择好模板后通常还得修修补补,所以懂点编程,虽然不是SEO一定要会的,但是有很大帮助,对个人站长是必不可缺的,一点不懂PHP,想改模板都无法下手。

比如,我用的都是英文模板,一些比较重要的地方还是得中文化,有的在模板文件中可以很容易找到并修改,如右侧栏文字,有的还需要修改核心文件,如留言部分的“留言”、“提交”按钮之类的。

SEO每天一贴到目前为止用的都是免费模板,修改的地方还挺多。比如我把帖子页面的By Zac作者链接删了,原因见下面各类存档部分。

帖子页面的发布日期也删了,因为一些帖子在搜索结果中显示居然是2006年之类时间写的,用户体验实在不怎么样。

再比如首页最下面加了一段关于本博客的说明文字,趁机加点关键词,能稳定显示在首页上,不然首页内容都是帖子摘要,不停变化,无法控制。这段文字只显示在首页,需要在模板或核心文件相应地方(视模板调用方法)加一个简单判断条件:

栏目及URL设计

栏目规划可以参考以前写的网站结构优化和多关键词优化帖子,原理和所有网站一样,根据关键词研究结果规划栏目,把次级关键词分配到栏目首页上。

为了使网站结构更扁平一点,可以多规划些栏目,但不用学我这个博客,栏目有点过多了。

栏目URL我建议还是使用英文单词比较好,中文容易在搜索结果中表现为乱码,拼音URL其实并不易读,尤其是稍长时,比如两三个字的拼音连起来。

WP栏目页面URL缺省设置是:域名/category/栏目名

中间多了个完全没必要的/category/,可以使用WP No Category Base插件删除这层目录。

帖子URL在WP后台Permalink部分有很多格式可以选:

有用编号的,有带日期的。建议使用自定义的:

/%category%/%postname%/

也就是 /栏目名/帖子标题/ 的格式,是网站结构的标准格式。

如果不是新闻类网站,不建议URL中带日期。

这种静态化的URL是需要服务器支持mod_rewrite的,有不止一个站长问过我虚拟主机是否支持mod_rewrite,说他们主机服务商说的,虚拟主机不能支持mod_rewrite。没这回事,虚拟主机一样可以支持mod_rewrite,不支持的只是服务商不愿意给你打开而已。

留言系统设置及管理

正常留言多当然是好事,但垃圾留言多了就不是好事了。我的多次经验说明,垃圾留言多了,网站质量评分会明显下降,排名下滑。所以对留言还是需要设置一定门槛。很多链接群发软件或服务就是利用一些博客之类的CMS系统对所有留言来者不拒,既不审核、也不过滤的漏洞实现的。

首先是安装启用Akismet插件,他们的垃圾留言数据库会挡住大部分垃圾留言。

每条留言人工审核工作量有点大,可以在WP后台设置第一次留言不马上显示,必须等待审核,有了至少一次人工审核通过的读者的留言才会自动显示。

留言中有两个以上链接的不会显示,等待审核。

设置关键词黑名单,把常见的医疗、赌博等垃圾词列进去。除非你就是做这个行业的。

这样垃圾留言绝大部分会被挡住了。

版权及转载声明

我在每篇帖子结尾都加了版权声明及转载要求。通常在模板里的single.php这个文件中加,不用每篇帖子人工加。

虽然SEO热度大不如前,但我的几乎每篇帖子还是有不少转载的,大部分没留原始出处,也没留原作者,甚至有的干脆说是他写的,但还是有正规网站会尊重版权,至少标明原作者的。即使比例不高,积少成多,长期坚持还是会有效果的。

Tag系统的使用

除了正常的分类系统,博客还经常使用tag系统,在其它网站和CMS也很流行。

Tag页面有很多好处,能覆盖更多关键词,页面相关度高,生成又简单。但也有潜在问题,网站内容不够多的话,tag页面质量会降低,tag词设置不合理的话,和分类页面会有重复。

所以建议使用tag的同学要注意,内容不够丰富时谨慎启用tag系统,设置tag的词时尽量不要与现有分类名称重复。

转向处理

网址规范化是几乎每个网站都存在,所以都要考虑的问题。

前面提到的URL的各种形式,选定了一种格式显示在网站上,其它格式还是可以访问的,需要做301转向到选择的规范化格式,这个工作下面介绍的Dean’s Permalinks Migration插件会自动处理。SEO插件会在帖子页面加上canonical标签,各种格式的URL即使都能访问并没有做301转向,也会通过 canonial标签规范化到选择的格式。

全站不带www的URL需要做301转向到带www的URL(或者反过来,有的网站选择不带www的版本为规范化版本),http版的URL也要做301转向到https版本。LAMP(Linux+Apache+MySQL+PHP)服务器,这个可以通过.htaccess 文件里的rewrite规则实现,如SEO每天一贴实际用的转向规则是:

RewriteCond %{SERVER_PORT} 80

RewriteRule ^(.*)$ $1 [R=301,L]

RewriteCond %{HTTP_HOST} ^seozac.com [NC]

RewriteRule ^(.*)$ $1 [L,R=301]

这只是个例子,别照抄。同样的功能,可以用不太相同的正则表达式和规则实现,不同服务器写法要求也可能不同。比如只做不带www转向到带www可以写成:

RewriteCond %{HTTP_HOST} ^seozac.com [NC]

RewriteRule ^(.*)$ $1 [L,R=301,NC]

贵网站具体怎么写,问程序员。

提速设置

缓存还是要设置一下的,可以将页面生成纯静态的,不需要每次有人访问都PHP从数据库调用内容,比较明显地提高速度。有不少插件,我用的是WP Super Cache。

服务器开启gzip.。可能的话,考虑CDN。这个我没有使用。

图片建议压缩后再上传,不要把照相机、手机里几M的文件直接拿来用。

各类存档

WP缺省有多种存档页面,包括按分类、按发布日期、按作者。这些存档页面大部分是没有用的,反倒有副作用,可能造成复制内容。

按分类存档当然要使用,这是正常的导航系统。

按日期、按作者存档,通常可以去掉,这两个存档内容和按分类是一样的,并没有实质价值。要去掉这两个存档,需要在模板中删除相应的显示代码,有的模板现在已经没有这两个存档了,或者通过widgets控制显示与否。

当然在模板中去掉代码,直接访问存档页面还是能访问的,为保险起见,可以在这两个存档页面全部加上noindex标签,确保搜索引擎不索引收录,或者用robots文件禁止抓取。

推荐插件

除了上面提到的插件,我还装了这几个插件:

All In One SEO Pack – SEO专用插件是必须的,我装的是All in One SEO Pack,会自动或手动设置很多SEO功能,如:

帖子页面标题、说明标签的客制化,加noindex 或nofollow标签(通常不加,但给了这个选项的自由)

加上canonical标签

首页标题、说明标签客制化

设置各类页面标题标签的格式,如前面提到的帖子标题顺序,各类页面是否加noindex或nofollow的缺省设置,写帖子时还可以覆盖这个缺省设置

另一个很有名的SEO插件是Yoast SEO,功能比All in One SEO更多更复杂一些,但大致是一样的,现在也更流行。之所以选择All in One SEO是最早写博客时先找到的它,习惯了而已。

AMP – 这个不用解释了, Google AMP实现最简单的方式。

Autoptimise – 把WordPress零散的CSS和JS文件集合到一个文件中,减少调用文件数,提高速度。试用了一下,没卸载,但目前并没有启用,觉得效果不大。

Broken Link Checker – 检查帖子连到其他网站的链接是否还有效。上次检查清理链接时发现很多当年连出去的链接已经无效了。

Dean’s Permalinks Migration – 帖子URL有任何变动时,这个插件自动设置301转向。

WP-Optimise – 清理数据库中的备份等不需要的东西。WP还有很多其它插件,能实现你能想到的各种各样的功能,常见但和SEO不直接相关的如两步认证登录、流量统计、图片处理等。在各种插件帮助下和适当设置后, 但要注意,启用的插件越多,插件越复杂,WP速度将越慢,所以,不是必须的功能,就不要安装了。

读者现在没时间看这么长帖子,或者想留着以后参考,可以下载《WordPress SEO指南》PDF文件。

作者: Zac@SEO每天一贴

来源:卢松松博客,欢迎分享

个人云服务器建设——(2)Ubuntu16.04安装LAMP

介绍

完成服务器的基本配置后,如果要架设个人网站,还需要安装一些基本的组件。架设网站通常可以使用PHP,JSP,ASP或者Python等,其中PHP最为常见,也是被称为“最好的语言”(不要当真,Python才是最好的语言)。PHP相比JSP,ASP等在搭建网站方面使用都要广泛的多,如果需要进一步研究,上手也比较快,基于PHP的Wordpress也是应用嘴广泛的博客系统之一,不仅用于个人博客建站,很多企业与机构也都有使用。而WordPress的架设平台最好的配置之一就是LAMP。

所谓LAMP并不是指一个软件,而是Linux,Apache,Mysql和PHP的缩写(程序员可能是最喜欢创造缩写词的群体了吧),也就是在Linux下采用Apache网络引擎和MySQL数据库,使用PHP语言搭建网站的整个环境。类似的,在Windows系统下这一套环境叫做WAMP,而更有一套跨平台的解决方案叫做XAMPP,其中X指的可以跨平台用于Windows,Linux或者MacOS,而最后一个P则是增加了对Perl语言的支持。Ubuntu作为最受欢迎的Linux发行版本之一,对LAMP的支持也是相当成熟的。

安装Apache

安装

安装Apache可以通过Ubuntu内置的apt-get命令,具体要安装的是apache2

sudo apt-get updatesudo apt-get install apache2

安装完成后,还需要设置一下主机的域名或者ip地址才可以。关于域名的解析可以参考相关的文章,如果暂时没有域名,只要添加运营商提供的ip地址即可。

通过nano或者vim打开apache的配置文件,并在最下方添加下IP信息。

sudo nano /etc/apache2/apache2.conf

在文件中找到或添加下面一行。

ServerName (服务器的域名或者IP地址)

修改并保存后,可以通过下列命令重启Apache服务,并进行测试

sudo systemctl restart apache2sudo apache2ctl configtest

配置防火墙

检查防火墙状态

sudo ufw list

如果没有意外,可以看到Apache Full和OpenSSH服务需要通过防火墙,检查apache的状态。

sudo ufw app info "Apache Full"

可以看到默认使用 80,443/tcp 端口和协议。在防火墙打开Apache入站规则(只有这样别人才能访问到你的网站)。

sudo ufw allow in "Apache Full"

在浏览器中输入你的域名或者IP地址,就能看到Apache的默认页面了。如果提示打不开或者找不到页面,可以检查一下上述步骤是否正确。对于阿里云的云服务器,也可能因为服务器安全规则组里面没有打开相应端口,这就需要参考相关云服务器手册配置一下安全组规则才可以。

也可以在命令行通过curl指令进行网络检查,这需要先安装curl包,这也是ubuntu下很有用的包。

sudo apt-get install curlcurl http://你的ip地址安装MySQL

由于鼎鼎有名的发明了Java语言的Sun公司不小心被数据库巨头Oracle收购,而在此之前MySQL又被Sun公司收购,这就导致原本在开源界最有影响力的MySQL直接成了竞争对手商业数据库Oracle(甲骨文)的旗下产品,虽然Oracle仍然继续提供MySQL的社区版,但MySQL的影响力正在逐步下降了。原MySQL的创建人新建了一个以自己女儿命名的MariaDB项目,这个项目在前期完全与MySQL兼容,所以下面安装和配置MySQL的命令,基本也都可以用在MarialDB中,但最新版本的MarialDB与MySQL已经不再完全兼容,所以可能会存在一些未知的兼容性问题。不过从长远来看,MariaDB最近拿到了阿里的融资,应该能够持续发力,有望赶超MySQL。

闲话少叙。在Ubuntu下安装MySQL或者MariaDB都很方便

sudo apt-get install mysql-server或者sudo apt-get install mariadb-server

安装过程中会提示输入root用户(是数据库的root用户,不是操作系统的)的密码,仍然建议使用强密码,任何时候都建议使用强密码,不要问我为什么。

安装完成后通过下列命令登陆数据库。

mysql -u root -p

进入mysql命令行系统,系统提示符会变成>。注意,MySQL下所有命令必须通过;结尾,这跟直接在shell里面输入命令是不同的。

和系统管理有关的mysql几个常用命令如下:

SHOW DATABASES; 显示所有数据库CREATE DATABASE wordpressdb;新建一个数据库,名为wordpressdbDROP DATABASE wordpressdb;删除一个数据库CREATE USER wordpressuser@localhost IDENTIFIED BY 'password'; 新建一个本地用户wordpressuser,通过密码验证,要把password换成自己的密码。GRANT ALL PRIVILEGES ON wordpressdb.* TO wordpressuser@localhost; 赋予wordpressuser用户wordpressdb的所有权限。

最重要的一个指令,

FLUSH PRIVILEGES;

执行完每个操作后,尽量都通过FLUSH PRIVILEGES指令更新一些数据库权限,保证权限写入进去,否则可能发现该建立的数据库或者用户没有建立起来。如果发现建立用户或者数据库abc不成功,一个解决方案是假设已经建成功了abc,先使用drop命令删除掉abc,然后flush privileges,然后重新建立,再flush privileges.

最后,操作完mysql之后通过exit;命令退出mysql环境,回到shell环境下。

为了提高数据库安全性,可以运行一次安全安装,安装一个VALIDATE PASSWORD PLUGIN的插件。

mysql_secure_installation

安装过程中会提示是否要安装VALIDATE PASSWORD PLUGIN选y,提示选择密码安全等级,推荐选1或者2。然后可以禁止掉root远程访问数据库的权限以保证安全,并且按照提示删除匿名访问的权限和test数据库。

安装PHP

PHP安装可以通过下面的命令

sudo apt-get install php libapache2-mod-php php-mcrypt php-mysql

因为我们安装了PHP,就要把apache里面检测首页的顺序调换一下。打开apache目录配置文件。

sudo nano /etc/apache2/mods-enabled/dir.conf

找到下面内容,并且把index.php 挪到index.html前面,在保存并关闭文件。

<IfModule mod_dir.c> DirectoryIndex index.html index.cgi index.pl index.php index.xhtml index.htm</IfModule>

通过命令行重启apache并检查状态

sudo systemctl restart apache2sudo systemctl status apache2

安装PHP模块

可以通过下列命令搜索所有的php模块,

apt-cache search php-|less

如果要显示某个模块的详情,用show命令,安装也可以通过apt-get命令,比如检查并安装php-cli模块

apt-cache show php-clisudo apt-get install php-cli

检查PHP安装情况

在apache目录下新建一个info.php文件

sudo nano /var/www/html/info.php

文件里面写入下列内容

<?phpphpinfo();?>

在浏览器访问

http://(ip地址或域名)/info.php

如果可以看到php的版本状态,证明安装成功。验证成功后务必删除info.php文件以保证系统安全。