MENU

对emlog的小调整

November 1, 2013 • 程序阅读设置

博客一直积着几个小问题没有解决,上周一并处理掉了。现在写出来,也许某些点会对大家有所帮助。

1.对不同来路选择性开启HTTPS。
各个搜索引擎中,目前只有Google对HTTPS支持比较好,而百度等搜索引擎,对HTTPS是不待见的。前几个月我调整全站HTTPS后,百度的收录全部掉光了,结果十分悲惨。改回普通HTTP后,收录上升了一些。此次调整,便针对不同来路,给页面生成不同的链接。
思路:emlog中地址的生成均基于BLOG_URL常量,仅需调整此常量即可。init.php对BLOG_URL常量进行初始化。
define('BLOG_URL', Option::get('blogurl'));改为

if(strstr(strtolower($_SERVER['HTTP_USER_AGENT']), 'baidu')){
    define('BLOG_URL', Option::get('blogurl'));
} else {
    define('BLOG_URL', str_replace('http', 'https', Option::get('blogurl')));
}

另外,此时首页ajax模块如日历等在https下可能会非正常,需要修改include/lib/function.base.php。getBlogUrl函数改为

function getBlogUrl() {
    $phpself = isset($_SERVER['SCRIPT_NAME']) ? $_SERVER['SCRIPT_NAME'] : '';
    if (preg_match("/^.*\//", $phpself, $matches)) {
        if($_SERVER['SERVER_PORT']=='443') {
            return 'https://' . $_SERVER['HTTP_HOST'] . $matches[0];
        } else {
            return 'http://' . $_SERVER['HTTP_HOST'] . $matches[0];
        }
    } else {
        return BLOG_URL;
    }
}

这时百度蜘蛛便不会因为https而不收录了,因为它还是爬行到http页面。我个人只在意百度的收录,其他搜索引擎没有作考虑。若需支持其他,遍历一个数组即可。

2.防垃圾评论。
来自外国的各类垃圾评论十分恼人,删了又发发了又删,开验证码,开强制中文也无济于事。通过观察这类垃圾评论不难发现,正文中均有html的<a>标记。因为emlog目前不支持html代码评论,所以不存在误判问题,我们只需判断评论中是否有这样的标记即可。
修改include/controller/comment_controller.php,第34行开始是对评论的检测,我们加一块elseif就行啦。

Archives Tip
QR Code for this page
Tipping QR Code