joomla模板设计与二次开发
English French German Italian Portuguese Russian Spanish

捐款 -> 升级 -> 下载

淘宝捐款获取下载权限

点击这里给我发消息

Donate to joomlagate.com to translate more Joomla! extensions and free Joomla! templates

文章分类阅读

下载最新版本 Joomla!

会员登录

Joomla之门 Joomla教程 Joomla! SEO JG Numbered Alias 解决中文 Joomla! 网站的 SEF 难题
JG Numbered Alias 解决中文 Joomla! 网站的 SEF 难题 E-mail
作者:白建鹏   
2009-12-04

SEF 这个词我通常翻译为“友好网址”,它是 Search Engine Friendly(搜索引擎友好)的缩写。友好的什么?这里省略了一个关键词 URL(网址)。如果你熟悉搜索引擎优化(SEO),就应该知道 SEF 也是一个很重要的 SEO 手段。在进行 Joomla SEO 时,启用 SEF 是最基本的要求。

从 Joomla 1.0.x 时代起,Joomla 自身就提供了 SEF 功能。但是 J1.0 平台的 SEF 确实不怎么样,只是去掉了 URL 中的“?”和“&”及“=”这些符号,却没有实现 SEF 的重点:URL 中含有关键词

到了 Joomla 1.5.x 平台,Joomla 官方终于改进了自带的 SEF 功能,这回可以在 URL 中含有关键词了。为了方便非英文语言用户(包括中文 Joomla 用户),官方还为文章单元、类别及标题这些 URL 中必须用到的部分增加了“别名”(Alias)字段。Joomla 核心 SEF 默认使用别名来生成 SEF URL,于是中文用户可以在文章别名中使用英文关键词来达到理想的 SEO 效果。

万事大吉了吗?非也。现在产生了一个新问题:中文用户必须填写 Alias 字段才能生成满意的 SEF 网址,但是并非每一个站长,或者文章作者,都是 SEO 专家,甚至有些作者连英文都不懂,你让他如何填写别名?还要考虑这些情况:作者忘记填写别名呢?网站有多个作者投稿,如何避免重复的别名?网站有海量文章,天长日久之后,如何避免重复的别名?

 

目前对中文 Joomla 文章进行 SEF 的处理办法

现在中文 Joomla 网站比较常见的 SEF 方案有下面三种:

 

  1. 不使用别名,直接使用中文标题生成 SEF:由于 Joomla 1.5 支持生成 UTF-8 编码的 URL,因此在 URL 中使用中文完全可行。这个方法的优点是简单易行,作者撰写文章时无需考虑 SEO 技巧 —— 他甚至不用知道什么是 SEO;同时 URL 中含有中文关键词也有利于 SEO。缺点也很明显:含有中文的 URL 不方便国际交流,你能指望老外看懂这样的 URL 吗?
  2. 在别名中使用中文关键词:有时候文章标题并不含有最佳的关键词组合,因此作者在别名中填写若干中文关键词。这样的 SEO 效果比上一条好一些,但是缺点是一样的。
  3. 通过插件自动转换中文为拼音然后生成 SEF:这样的方法避免了在 URL 中出现中文字符,汉语拼音的外观与英文字母完全一致,因此优点是方便交流,方便文章作者——作者同样不用考虑 SEO 技术。这个方法的缺点也是严重的:
  • 像“的”、“与”、“和”这些无用的词汇无法剔除,因为如果你刻意滤除,则同时滤除了“德”、“雨”、“河”这些词汇,而后者很可能就是文章的关键词!比如,“德甲”被处理成 jia(de 被滤除了),还有意义吗?
  • 相邻拼音之间如果不用连字符分隔,可能出现误解。例如:“jianzhan”这个字串你怎么理解?很可能是“建站”,也很可能是“集安站”(吉林省集安市)—— 谷歌搜索引擎再聪明,恐怕也猜不出吧?如果使用连字符分隔,请问“xiao-he-hen-nan-guo”是指“小河很难过”,还是指“小何很难过”?更不用说这样产生的 URL 长度会增加很多!
  • 考虑到汉字里面“同音字”非常多,因此“拼音 SEF 法”也难以避免重复 URL 出现(糟糕的是这两个重复的 URL 本应该属于不同的页面)!很难设想在一个拥有成千上万文章的网站(例如区域信息港之类的门户网站)使用这种 URL!

综上所述,我个人认为这三种方法都不好。中文 Joomla 网站要实现便捷而且有利于 SEO 的 SEF,要么老老实实手动填写英文关键词做别名(小网站),要么就使用我建议的方案(适用于大型网站或作者不熟悉 SEO,或不熟悉英文):

Joomla 之门的解决方案

我认为中文 Joomla 文章最理想的 SEF 方案必须满足:

  1. URL 是唯一的,永远不可能重复或冲突;
  2. 文章作者无需考虑将来怎样生成 URL,集中精力写文章;
  3. 生成 SEF 网址的过程是自动化的;

这三个基本原则我想您不会不同意把?好,我们就沿着这个思路来处理。

在 Joomla 的文章参数中,什么是唯一的?只有一个,那就是 ID !每一篇文章都有自己的 ID,即使删除一些文章,再新建文章时也不会重复使用过去的 ID!

也就是说,我们如果要满足第一个条件,就必须使用文章 ID。

你或许注意到了,Joomla 核心的 SEF 方式就在 URL 中使用了文章 ID,但是它不仅仅使用了 ID,还带有别名,这才把问题复杂化了——我是指对中文文章来说。

第二个条件:文章作者如果不填写别名部分,那就是空的了。但是 Joomla 1.5 有一个很糟糕的设计是:自动给空的别名填写形如“2009-12-04-10-28-17”这样的“日期 + 时间”型别名。所以我们必须排除或替换(override/replace)这样的别名!

手动替换?不,全自动。因为必须满足第三个条件。这就要求必须开发一个全新的软件,来做到:自动将全部文章(包括以后新建的文章)的别名填写为该文章的 ID,如果某篇文章已有别名,也删掉,替换为文章 ID。

那么,最终我的方案想得到什么样的 URL 呢?形如:

http://www.uhiker.com/section-alias/category-alias/48.html

解释一下:由于文章单元和类别的“别名”可以由站长在后台控制,并且一般不可能产生“重复”或“冲突”,因此还建议使用英文关键词做别名。而 URL 中的文章部分,只使用其 ID,就是示例中最后的数字 48。这样的 URL 简洁、方便,虽然在 URL 的“文章”部分没有任何关键词,有一点 SEO 损失,但是极大地方便了大型网站的投稿活动。

Joomla 之门的产品:JG Numbered Alias

你不用搜索 JG Numbered Alias 这个词了,这是 Joomla 之门站长在24小时之前刚刚创造的新词汇,同时也是一个 Joomla 插件的软件名称。我相信目前互联网上还没收录这个词,而当你使用这个插件之后,或许你会帮忙传播 JG Numbered Alias 这个名字以及 Joomla之门的名声。

 

如果将前面的思路整合在现有的高级 SEF 组件如 Artio JoomSEFAceSEF 中,就是最理想的结果了。我在这两个软件的官方论坛都提过这个建议,Artio 官方说“好主意,可以试试”,JoomAce 官方则说“这玩意没啥意思,你要做的话,付钱给我,我专门给你定制”。

我对 AceSEF 的收费没有意见,我要求他们将这个功能集成到 AceSEF 参数中,作为一个选项提供给用户。我相信不仅能受到中文用户的欢迎,同时也能造福日语、韩语、阿拉伯语等所有非拉丁语系(Non-Latin)Joomla 网站的用户!但是他们如此不重视这个方案,我无法认同。

而 Artio 官方迟迟不见动静,我终于萌生了自力更生的念头。我给几个 Joomla 开发人员发送了邮件,最后 Joomler!.net 回信,于是有了我们合作的结晶:JG Numbered Alias 插件。

2010年2月18日补充:Artio JoomSEF 刚刚发布了 v3.5.5 版本,此版本采纳了 Joomla之门 的建议,为文章系统(com_content)提供了“纯数字格式友好网址”选项。这个数字可以是“文章 ID”,也可以是“日期”,或者“日期+ID”。

JG Numbered Alias 的功能就是:自动将每篇文章的“别名”替换为该文章的 ID,然后配合高级 SEF 组件,就能生成前面提到的 URL。

提醒一下:JG Numbered Alias 必须配合高级 SEF 组件使用,如果只启用 Joomla 核心的 SEF,它会继续添加一个 ID 上去,从而将 URL 变成:

http://www.uhiker.com/section-alias/category-alias/48-48.html

Joomla之门愿意继续改进“ID SEF”方案

在某些网站,尤其是新闻网站,对这种数字式 SEF 的方案还应该改进一下:由单纯的 ID 改为“日期 + ID”,例如:

http://www.baijianpeng.com/news/latest/20091204048.html

新闻网站上(或新闻栏目)使用 Date+ID 形式的 SEF URL,有助于让读者(当然还有搜索引擎)迅速明白这篇文章的发表日期,便于判断新闻是否真的“新”。

另外,JG Numbered Alias 插件只解决了文章系统。我们还应该想到,其它一些第三方 Joomla 扩展也都会遇到同样的 SEF 难题。例如:你安装了论坛组件,怎样为论坛的话题和帖子生成 SEF 网址呢?你要知道,论坛组件连“别名”这个字段都没有!

我认为还是使用 ID,简单的数字,使 URL 简洁(据说 Google 等搜索引擎不喜欢太长的 URL)且保持唯一。

你可能说:怎么又用数字?没有关键词啊。那么别忘了,著名的 Discuz! 论坛一直是使用数字作为帖子 URL 的。如果你有更好的 idea,请到论坛发帖或在页底评论中提出。

不止是论坛,还有图库组件、下载系统等等。我认为对于不太熟悉英文而且没时间仔细处理每一个别名的网站,使用 ID 是最好的方法。例如:著名的下载组件 Remository 在我的建议下,为下载类别和下载文件都提供了别名字段,你可以通过英文别名来生成最佳的 SEF 效果,但是如果做大型下载站呢?就可以使用 ID,所生成的数字式 URL 一样好用 —— 天空下载、霏凡下载、华军软件园等大型网站不都是使用数字作为 URL 的“页面”部分吗?

当然了,Joomla之门的站长是不懂 PHP 开发的。如果你有兴趣,欢迎加入“Joomla 中文开发小组”,我们一起来做点有意义的事情。怎么样?

 

后记:JG Numbered Alias 插件是由 Joomla之门付费给 Joomler 才开发成功的。因此,如果您认同我的思路,愿意看到 Joomla之门继续为中文 Joomla 用户提供更多好用的扩展,请您点击下面的链接捐款给我们,帮助我们继续发展。谢谢!

点击此处立即向 Joomla! 捐款,升级到高级会员

 

 下载 JG Numbered Alias for J1.5 自动替换文章别名为 ID 的插件 v1.0 多国语言版
文件标题: JG Numbered Alias for J1.5 自动替换文章别名为 ID 的插件 v1.0 多国语言版 (详情)
文件类型: zip
版本: 1.0
文件大小: 8 Kb
下载次数: 242


 

评论  

 
+2 #5 支持Mosets Tree组件吗JPCAD.net 2009-12-21 03:45
这个插件支持Mosets Tree组件吗
 
 
0 #4 不推荐sh404SEF白建鹏 2009-12-11 17:25
引用 chndesign:
404组建呢

sh404SEF 已经完全收费了(没有免费版本) ,不方便用户试用,因此不做推荐
 
 
+4 #3 回复: JG Numbered Alias 解决中文 Joomla! 网站的 SEF 难题chndesign 2009-12-07 20:27
引用 liyiwen000:
“提醒一下:JG Numbered Alias 必须配合高级 SEF 组件使用……”
是指“Artio JoomSEF 或 AceSEF”?

404组建呢
 
 
+1 #2 回复: JG Numbered Alias 解决中文 Joomla! 网站的 SEF 难题野草工作室 2009-12-07 19:30
“提醒一下:JG Numbered Alias 必须配合高级 SEF 组件使用……”
是指“Artio JoomSEF 或 AceSEF”?
 
 
+1 #1 回复: JG Numbered Alias 解决中文 Joomla! 网站的 SEF 难题ckdycn747 2009-12-07 13:00
感谢站长和全体支持Joomla 之门的兄弟的无私努力!Appr eciate a lot!