存档

作者存档

推荐一款Awstats的PHP外挂系统Jawstats

2009年2月18日

虽然已经有了免费的 Goolge Analytics,我们还是不能放弃原始 log 的分析。之前介绍过nginx下支持awstats,然而由于数据量比较大,在按月统计的时候,还时有发生超时的现象。今天在浏览时发现JAWStats 是一个用来统计网站日志的工具,目前出到0.7Beta版。这个工具是AWStats生成的数据基础上构造更加清晰美观的关于网站访问数据的图表、表格,并且安装非常简单和快速,号称awstats companion, 在美观性和速度上都有一些提高。更关键的是,这个工具是php写的,因此不再需要nginx有对perlcgi的支持了。

jawstats

下载jawstats后把config.dist.php拷贝到config.php,并配置如下:

$aConfig["site1"] = array( //site1:你的配置文件名,如awstats.www.jefflei.com.conf这里就用www.jefflei.com
"statspath" => "/path/to/data/", //statspath:awstats数据文件的路径;
"updatepath" => "/path/to/awstats.pl/",  //updatepath: awstats.pl执行文件所在目录
"siteurl" => "http://www.my-1st-domain.com",
"sitename" => "My 1st Domain",
"theme" => "default",
"fadespeed" => 250,
"password" => "my-1st-password",
"includes" => "",
"language" => "en-gb"
);

安装好之后,在实际使用过程中发现白页,打开index.php中的error_reporting(0)改成error_reporting(E_ALL)可以看到错误报错,我看到的是分配内存不足,问题出在clsAWStats.php中的这行

$this->sAWStats = htmlspecialchars(file_get_contents($sFilePath));

找了下jawstats官方论坛,发现支持大数据量的网站数据目前确实有问题, 希望今后jawstats新的版本能越来越完善。

再安装中文语言包,可以下载jawstats语言包,解压缩后上传到lang目录下即可

VN:F [1.9.22_1171]
Rating: 0.0/10 (0 votes cast)
VN:F [1.9.22_1171]
Rating: 0 (from 0 votes)

软件和工具

设置WordPress博客的Robots.txt

2009年2月17日

WordPress的robots设定主要是两个目的,一方面减少管理页面被抓取,另一方面降低博客的相似页面。好的robots.txt对于伪装静态(permalink)的wordpress博客来说就更重要了。下面介绍一下wordpress的robots.txt设定

首先我们需要不过滤对一些管理页面,程序和和rss的索引,同时,我们又希望搜索引擎也索引我们上传的内容。如果有一些页面比较类似或者重复,也可以用robots.txt文件更好地控制搜索引擎访问和索引你的网站,通过在robots中指定Disallow规则将类似网页从搜索引擎的索引(Index)中删除。参考了国外一些博客的robots设置,将我博客的robots调整如下:

User-agent: *
Disallow: /*?*
Disallow: /*?
Disallow: /?s=
Disallow: /tag/
Disallow: /rss/
Disallow: /feed/
Disallow: /date/
Disallow: /search/
Disallow: /links-page/
Disallow: /archive/
Disallow: /archives/
Disallow: /category/
Disallow: /category/*/*
Disallow: /trackback/
Disallow: */trackback
Disallow: /contact-form/
Disallow: /page/
Disallow: /pages/
Disallow: */comments
Disallow: /comments/
Disallow: /comments/feed/
Disallow: /wp-admin/
Disallow: /wp-includes/
Disallow: /wp-content/plugins/
Disallow: /wp-content/themes/
Disallow: /wp-content/cache/
Allow: /wp-content/uploads/
Disallow: /cgi-bin/

# Google Googlebot
User-agent: Googlebot
Disallow: /feed/$
Disallow: /*/feed/$
Disallow: /*/feed/rss/$
Disallow: /*/trackback/$
Disallow: /*/*/feed/$
Disallow: /*/*/feed/rss/$
Disallow: /*/*/trackback/$
Disallow: /*/*/*/feed/$
Disallow: /*/*/*/feed/rss/$
Disallow: /*/*/*/trackback/$
Disallow: /*.php$
Disallow: /*.js$
Disallow: /*.inc$
Disallow: /*.css$
Disallow: /*.wmv$
Disallow: /*.avi$
Disallow: /*.cgi$
Disallow: /*.txt$

# Google Image
User-agent: Googlebot-Image
Allow: /*

User-agent: Mediapartners-Google
Allow: /

User-agent: Adsbot-Google
Allow: /

User-agent: Googlebot-Image
Allow: /

User-agent: Googlebot-Mobile
Allow: /

User-agent: ia_archiver
Disallow: /

User-agent: duggmirror
Disallow: /

Sitemap: http://www.jefflei.com/sitemap.xml

爬虫说明

Adsbot-Google
这个蜘蛛是Google专门抓取广告主AdWords登陆页面质量得分(landing page quality)的
Googlebot
Googles网页(Google Web Index)和新闻(google news)索引网页蜘蛛
Googlebot-Image
Google图片索引网页蜘蛛(Google image index)
Googlebot-Mobile
Google无线的索引爬虫(Google Mobile Index)
Mediapartners-Google
这个蜘蛛是Google专门抓取广告网站决定AdSense内容(Google Adsense Content)相关性等的专用爬虫

检查Robots.txt的设置可以使用Google网站管理员工具robots分析工具,具体的使用请见google robots说明。

需要注意的是,robots.txt只对遵守规矩的蜘蛛有用,对于一些流氓蜘蛛(见我另一篇关于soso spider爬虫的博客),基本等于没有作用。

使用Robots Meta

除了使用robots.txt,还有两种方法可以禁止爬虫索引,一种是在网页的meta中的robots指定NOFOLLOW/NOINDEX, 还有一种办法是在一个具体的link中指定NOFOLLOW。NOINDEX指示搜索引擎不要收录,这样搜索结果中就不会出现该页,而NOFOLLOW则意思说不要跟进索引链接,因此PR不会被计算。在一篇对Matt Cutts访谈中也介绍了一些关于robots的介绍。比如下面这句的意思就是不要索引本页,但是follow本页的链接:
<meta name="googlebot" content="noindex,follow" />

最后,推荐一个Wordpress中Header.php中的一些robots设置的小技巧
<?php if(is_single() || is_page() || is_category() || is_home()) { ?>
  <meta name="robots" content="all,noodp" />
<?php } ?>
<?php if(is_archive()) { ?>
  <meta name="robots" content="noarchive,noodp" />
<?php } ?>
<?php if(is_search() || is_404()) { ?>
  <meta name="robots" content="noindex,noarchive" />
<?php } ?>

VN:F [1.9.22_1171]
Rating: 7.0/10 (1 vote cast)
VN:F [1.9.22_1171]
Rating: 0 (from 0 votes)

软件和工具 , ,

WordPress自动升级和plugin插件更新的问题

2009年2月14日

WordPress2.7的一键自动更新很好用。可是在使用Wordpress插件自动更新和安装时,有时发现需要提示输入ftp信息:
FTP Connection Information
Host:
Username:
Password:

这是Wordpress的一个bug,在某些文件系统上有问题从wordpress2.5到2.7都一直没有更新,在国外网站上查了下修复方法如下:

1. 编辑wp-admin/includes/file.php找到以下这行
if(getmyuid()==fileowner($tempFile)){
把这句中把getmyuid改成posix_getuid

2. 完成以上修改应该不会再要输入ftp信息了,但是有时候会告知目录不对,在wp-content目录下建立upgrade目录
chown www:www wp-content/upgrade
chmod +w wp-content/upgrade

做完以上设置应该就可以自动更新了。

VN:F [1.9.22_1171]
Rating: 9.0/10 (1 vote cast)
VN:F [1.9.22_1171]
Rating: 0 (from 0 votes)

软件和工具

WordPress优化插件推荐

2009年2月10日

上一篇介绍了一些wordpress必装插件推荐,这里介绍一些wordpress的优化插件:

Landing Sites: 为搜索引擎带来的用户增加高亮用户搜索关键字,用户来源和欢迎语。安装方法参见Landing sites官方说明, 添加百度支持需修改landing-sites/landingsites.php中$search_engines变量

'google.cn' => 'q',
'baidu.com' => 'wd',
'soso.com' => 'w',
'sogou.com' => 'query',

中文处理:function ls_get_terms($d),在函数最后一曲return $terms;之前加入
if (!seems_utf8($terms)){
$terms=iconv("GBK", "UTF-8", $terms);
}

WP Search and Replace 一个简单的WordPress搜索替换插件。可以搜索数据库中的字符串并进行替换, 你可以选择搜索数据库中的各种字段,包括ID, post-content, GUID, titel, excerpt, meta-data, comments, comment-author, comment-e-mail, comment-url, tags/categories和categories-description。注意这个插件使用的是 SQL 搜索,所以搜索的文本是大小写敏感的

WP-SpamFree 据不少人反映他比Akismet做得更好。

WP loging lockdown 它的功能就是保护WordPress帐户不被暴力穷举法破解,当系统检测到某个IP段在一定时间内使用错误密码登录超过一定次数后,自动封锁该IP。默认设置为:5分钟内连续3次密码错误封掉该IP段1小时。

loginlockloginlock02

 WP-Ban 插件可以实现以 IP 地址和主机名为条件屏蔽相应用户访问你的博客。可以通过自定义一个屏蔽提示信息,被屏蔽的用户尝试访问你的博客时会看到该信息。此插件还可以记录被屏蔽用户有多少次尝试访问。另外,屏蔽用户设置条件时可以全用通配符。

美化插件

coolcode/wp-syntax

MyCaptcha

优化插件

Search Unleashed 一个让WordPress实现全文搜索和高亮搜索关键字的WordPress插件。可让你配置更多的搜索选项,包括留言,文章,页面,草稿,摘要,附件,自定义字段,排除指定分类下的文章搜索,排除指定ID的文章或页面等等,还支持在搜索结果中高亮搜索关键词,可以设置在哪些部份激活高亮,直接在后台配置高亮颜色,高亮区域等等

screenshot-2

VN:F [1.9.22_1171]
Rating: 0.0/10 (0 votes cast)
VN:F [1.9.22_1171]
Rating: 0 (from 0 votes)

软件和工具

WordPress必装插件推荐

2009年2月9日

翻页工具WordPress pagebar

wordpress pagebar插件比另一款wordpress翻页工具wp pagenavi使用起来方便多了,安装之后,只需要把pagebar.css拷贝到你的主题themes所在目录,然后激活控件并用自动插入既可显示了。 

Google Site Map Generator

Google XML Sitemaps Google给网站管理者提供了一个方便索引的方法,就是提供Sitemap,以便它更全面地抓取到你网站的内容。这个插件可以帮你轻松制作这样一个SiteMap。

相关文章插件 Related Posts

Mattcutts推荐的Yet Another Related Posts Plugin (YARPP),文件中已经包括多种多语言包,利用文章名字和tag,分类等做相关文章,很强. 中文最好关闭文章标题的匹配,并关闭摘要。如果你不喜欢相关标题的广告语,可以把支持推广YARPP关闭。

中文 WordPress 工具箱,看名字你就知道,这是非常本土化的一个插件。它的功能是提供了相关文章、随机文章、最多评论文章等功能,真可谓一个不可缺少的工具箱。

WP Super Cache 缓存Wordpress插件
WP Super Cache 是 WordPress 官方开发人员 Donncha 开发,是当前最高效也是最灵活的 WordPress 静态缓存插件。它直接生成 HTML 文件,这样 Apache 就不用解析 PHP 脚本,通过使用这个插件,能使得你的 WordPress 博客将显著的提速。工作原理如下:

一般常规缓存办法是把动态页面保存为 HTML 代码,WP Super Cache 也是通过同样的方式的,但是通过自动的方式完成这个过程。当你一个访问者来的你的站点,他没有登入或者也没有留言,这样他得到是一个在 WordPress cache 文件夹下的 supercache 子文件夹下的纯静态文件,其实你都可以自己到上面的 supercache 目录下去查看同样的永久链接的 HTML 文件的备份。判断一个页面是否已经被缓存了,查看该页面的源代码,看看最后一行是否有 <!– super cache –> 或者 <!– super cache gz –>。

安全插件

WP Security Scan 是一个安全插件,他可以扫描你网站的安全问题和检验密码、文件准许、数据库安全、隐藏的WP版本和Wordpress安全防护. 包括:

取消在header.php中的WP版本信息:普通模板会在header.php中加入如下信息来显示使用中的WP版本,这样不良企图的人会根据版本来进行攻击。

禁止读取plugin目录,为了测试,调用yoursite.com/wp-content/plugins/,应该改在web服务器上禁止改选项

防止搜索引擎抓取/wp-admin/目录, 在域名根目录中放入wordpress的robots.txt 文件

更多wordpress有用的优化插件见另一篇博客wordpress选装插件

VN:F [1.9.22_1171]
Rating: 0.0/10 (0 votes cast)
VN:F [1.9.22_1171]
Rating: 0 (from 0 votes)

软件和工具

WordPress迁移和升级

2009年2月8日

1.  备份wp-contents目录下的数据和文件并拷贝到新服务对应目录下
2. 备份MySQL数据表共十张,并在新服务器的MySQL数据库中导入
3. 选择数据库中的“wp_options”表单,按“option_name”排列主键顺序,找到“option_name”键值为“siteurl”的项目,选择“编辑”按钮,把原来的网站链接地址改为新的。然后找到“home”项目,同样把链接改成新的网址

测试一下应该完成了。

升级过程也比较简单:
1. 先备份原来的数据库和wp-content下面的文件
2. 将新版文件全部复制后覆盖原文件,注意保留wp-config.php中的数据库密码等。
3. 重新进入http://yourblog.com/wp-admin/, 按照提示升级就可以了。
4. 完成后注意权限设置:
chown wwwuser:wwwuser -R *
chmod a+w wp-content/upgrade

另外升级完成后后要保留原来的.htaccess文件和robots文件,并清理掉和版本相关的文件来提高安全性,包括:
* license.txt
* Readme.html
* the import*.php files

可以用命令行来完成后
$ tree -flai |grep -E readme?\|licens?\|install?\|setup?\|upgrade?\|sample?\|import?

VN:F [1.9.22_1171]
Rating: 0.0/10 (0 votes cast)
VN:F [1.9.22_1171]
Rating: 0 (from 0 votes)

软件和工具

介绍几个有用的开源项目

2009年2月6日

wordpress,这个不用介绍了,我正在使用的Blog系统,目前出到2.7版

phpmyadmin php写的数据库管理工具,开发人员很少有不用的,目前最新版本3.1.

XAMPP  一次性安装MySQL, Apache, php,ftp, phpmyadmin等,堪称本地开发套装.类似的Appserv, WAMP也不错

awstats, 网站管理员必用工具,perl编写的服务器日志分析工具,帮助你了解哪些用户看了你的网站,搜索引擎蜘蛛什么时候来访问了哪些页面.

webhelpdesk有免费版也有收费版,适合公司内部IT人员接收和管理任务,任务分类和需求逐步细化功能较强,后台管理功能也不错,有任务的批准和状态等。

osticket, 网站客服支持系统, 没试过,貌似不错。

openX 超级强大的站内广告管理系统.开发者之一ratschiller 之前是大名鼎鼎的phpmyadmin的开发者,该软件在2008年获得数千万美金的融资.

discuz 国内著名品牌,php下开发的论坛软件

aptana studio 确切来说是个web前端IDE开发利器,网页自动识别对不同浏览器的支持

eclipse Java IDE开发工具

VN:F [1.9.22_1171]
Rating: 0.0/10 (0 votes cast)
VN:F [1.9.22_1171]
Rating: 0 (from 0 votes)

软件和工具

SEO之降低相似页面

2009年2月5日

最近buy域下被百度收录页面大幅下降,从awstats上的baidu蜘蛛抓取记录来看,也从每天1500页降低到100页左右。很是头痛,和同事商量了一下发现是类似页面的问题:

baidu-similar-items

点击进取之后,发现很多商品介绍页面被百度当成是相似条目。

我们翻开页面,可以看到几个问题:

1. 页面最上端是导航
2. 接下来是商品分类
3. 终于出现了商品的主体内容,但是这里面有一大段品牌介绍,而这段介绍是很多该品牌下的商品共有的,也就是这里导致了这些页面被当作类似条目
4. 商品的图片链接中没有alt的文字介绍
5. 商品详细图片页面是js弹出页面,而搜索引擎一般不会收录js,因此未被收录

解决方法,第一,第二项的解决方法在上一篇百度搜索结果中的描述中已经介绍过了,第五项可以用<noscript>中增加链接的方式,让搜索引擎知道图片链接,在用户关闭JS的情况下这也提高了网页的友好性。关于第三项,有3项措施可以采取:
1. 编辑需要多输入详细信息
2. 可以用程序生成一段和商品名称,品牌,分类相关的描述,放在编辑描写的最上部。
3. 将属性等信息尽量提前
——————–
2009.2.26日补充
4. 将送货方式,退货规定等所有页面都一样的大量文字用js输出
用<a hre=”/website-analysis-tools#page-similarity-check“>页面相似度检测工具</a>检测

VN:F [1.9.22_1171]
Rating: 0.0/10 (0 votes cast)
VN:F [1.9.22_1171]
Rating: 0 (from 0 votes)

搜索引擎

页面摘要的改进

2009年2月4日

昨天发现一个问题,Google索引比较严格地遵守了在显示结果用用网站的Meta Description描述,而百度中的描述并不严格遵守Meta里面的description部分,而是在有的情况下自动抓取文章中内容摘要作为网站描述。baidue search result example
这段内容称为页面摘要(Snippet),完整而有效的页面摘要能帮助用户在搜索结果中点击我们的网站,对网站在搜索结果中的长期排名是有一定帮助的。
页面摘要的长度
百度页面摘要为220个(或110个汉字)左右,含标点符号,而Google页面摘要为240个字符(或120个汉字)左右。
如何不显示DMOZ的网站描述
有时候google会用DMOZ的网站描述替代你的Meta作为网站摘要,如果你不希望用DMOZ的网站摘要,那么可以在页面头部中用下面这句:
<meta name=”page snippet” content=”NOODP”>
百度页面摘要是怎么生成的
根据我的观察,搜索结果中有时候出现Meta Description,而有时候会自动根据页面内容产生网页摘要呢。猜测是百度认为页面和描述比较相关,就会引用描述,我想这是由于国内黑帽SEO手法太多的缘故。我们可以看到,通常情况下都是抓取页面的最上部分的文字。”蜘蛛”爬行网页的顺序,通常都是从上到下,从左到右,其实这也是人们阅读网页的习惯,总是首先看到第一屏的内容,既然知道”蜘蛛”是这样爬的,那它捉取网页内容必然会遵循次原则。
这让我想到前阵子point和我介绍的smarter的网站设计,他们在HTML中把导航部分放在页面下部,只是通过css把这个导航的div在浏览器显示的时候放在顶部,这样帮助蜘蛛标示内容,所以在smarter的搜索结果中,更多地显示了desription,即使不显示description,文字描述也不会很乱. 这个方法值得借鉴,尤其在ViewItem(商品详情)页面。
 
当然这个方法也不能完全避免百度显示中间的内容,有时百度也会抓取页面中间的内容。这个和密度和相关性很有关系,这对我们的编辑提出了一定的要求。那么概括一下可以采取的行动:
1. 页面的导航部分放在html的下部
2. 将二级商品分类也显示在html的下部,并用css将其放在左测或右侧,使得页面主体部分显示在HTML的比较前面(其实wordpress等博客都是这么做的)
3. 编辑在编辑title和description中的关键词时,必须要和商品标题和商品描述有呼应
其实网站的用户不仅仅是普通用户,还有搜索引擎–从服务器日志来看目前我们每天有近40%访问是来自于搜索引擎的spider。

接下来,让我们看一个网站的黑帽手法,这是一个反面教材,希望大家引以为戒。使用这种SEO手法一旦被识别,很容易被搜索引擎关禁闭:

seo-black

这是一个国内有一定规模的鞋类电子商务网站,具体哪个网站我就不说了,虽然把主要描述提到最前面对搜索引擎读取很有帮助,但是该网站为了节约用CSS调整页面的时间,直接把商品信息放在页面最上部,而用css调整为用户看不到这段信息,显然这是只给搜索引擎看得,这种玩弄搜索引擎的方法是标准的黑帽手法,一旦被发现很有可能会被搜索引擎屏蔽。

看过了反面教材,最后介绍两个比较好的例子:

高质量页面摘要赏析:http://hi.baidu.com/womanv/blog/item/125d11eaa63ab8d6d439c987.html

页面摘要改进案例:http://www.admin5.com/article/20081220/122085.shtml

VN:F [1.9.22_1171]
Rating: 0.0/10 (0 votes cast)
VN:F [1.9.22_1171]
Rating: 0 (from 0 votes)

搜索引擎

SosoSpider及恶意蜘蛛屏蔽

2009年1月29日

最近从网络日志看到有很多陕西电信IDC的访问,占我们www总访问数的一半,ip都是124.115.0.X和124.115.4.X,总共约有60多个IP。网上搜索了一下,发现这是sosospider,文章参见:

http://www.wangzhongyuan.com/archives/522.html
http://www.cnzzr.cn/2008/02/sosospider-124-115.html

由于这个sosospider不遵守行规,不读取robots.txt,并且User-agents中没有spider信息,而且还带有referer,伪装成普通用户,封闭的办法只有禁止IP:

Order Allow,Deny
Allow from all
Deny from 124.115.4. env=bad_bot
Deny from 124.115.0. env=bad_bot

注意这里deny和allow的顺序,对于其他恶意搜索引擎,可以用:

SetEnvIfNoCase User-Agent “Indy Library” bad_bot

Order Allow,Deny
Allow from all
Deny from env=bad_bot

nginx配置如下:

location / {
    deny   124.115.4.0/24;
deny 124.115.0.0/24;
    allow    all;
}

VN:F [1.9.22_1171]
Rating: 0.0/10 (0 votes cast)
VN:F [1.9.22_1171]
Rating: 0 (from 0 votes)

搜索引擎, 系统管理