Joomla首页用PHP代码判断普通用户和搜索蜘蛛

By | 2014 年 3 月 27 日

偶看有个Joomla需要判断用户浏览器语言来执行跳转,而判断浏览器语言的前提是需要判断浏览网站的是普通用户,还是搜索引擎的蜘蛛。

joomla-spider

偶看在刚开始使用的是PHP的$_SERVER[‘HTTP_REFERER’]函数,经过两天时间查看网站的百度快照发现,网站首页在百度的快照出现错误,跳转到另外一个网站上了。偶看赶紧修改判断函数,经过分析需要使用$_SERVER[‘HTTP_USER_AGENT’。

在Joomla模板下的index.php页面顶部添加
[php]
$app = JFactory::getApplication();
$menu = $app->getMenu();
if ($menu->getActive() == $menu->getDefault()) {
$ua = strtolower($_SERVER[‘HTTP_USER_AGENT’]);
$botchar = "/(bot|crawl|spider|slurp|yahoo|sohu-search|lycos|robozilla)/i";
if(!preg_match($botchar, $ua) && $_SERVER[‘HTTP_REFERER’) {//判断为非搜索引擎,而且是直接访问的用户
$lang = substr($_SERVER[‘HTTP_ACCEPT_LANGUAGE’], 0, 4); //只取前4位,这样只判断最优先的语言。如果取前5位,可能出现en,zh的情况,影响判断。
if (preg_match("/zh/i", $lang)){
header(‘location:’.’http://www.oukan.net’);
}
}
}
[/php]
这样即可在Joomla网站的首页,通过PHP代码判断访问网站的是普通用户,还是搜索蜘蛛。如果是普通用户,而且浏览器的默认语言是中文,及跳转到中文网站;如果是搜索引擎,不进行任何判断。

2 thoughts on “Joomla首页用PHP代码判断普通用户和搜索蜘蛛

发表评论

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据