Search engine-friendly URLs

原创 2004年12月31日 02:05:00
话题不得不从很早前就开始,原来的论坛 ( http://oldbbs.netbuddy.org/cgi-bin/ultrabo...d/ultraboard.pl ) 用的是UltraBoard 2000,如果用Google查询,可能会查到旧论坛的首页,其它的页面Google上无法找到,为什么呢?
因为无论用什么论坛,基本上论坛都是由动态生成的页面组成的,而且论坛都有认证功能,一般来说,访问某个主题的连接可能是这样的:
http://oldbbs.netbuddy.org/cgi-bin/UltraBo...15&TID=636&SID=

这里面有很多Google等搜索引擎所不喜欢的符号,比如&,?,=等等,Google等搜索引擎最喜欢的就是静态的HTML页面了(比如 http://mize.netbuddy.org/ 那种),Google最讨厌的就是"ID=0DCB19209AE0"这样的字符串,因为类似这样字符串都是被一些动态页面(比如 postnuke/phpnuke、各种论坛等)用来表示一个session的,也许Google用来INDEX站点的蜘蛛(spider)——Googlebot每次访问某个动态页面的同一个页面时URL中的ID=都会不同。

比如
http://oldbbs.netbuddy.org/cgi-bin/UltraBo...15&TID=636&SID=
http://oldbbs.netbuddy.org/cgi-bin/UltraBo...636&SID=0292381

访问的是同一个页面

所以,Google等搜索引擎是最恨&,?,=这样的字符了,更讨厌ID=XXXX这样的字符串出现在某个URL里面,如果某个URL包含大量的这样的字符,那么Google可能会拒绝INDEX这个页面。

这也是很多论坛的主题很难从Google上搜索到的原因,这也是xxbin下定决心要把论坛的URLs改成搜索引擎友好的最直接原因和动力,要知道自己的贴子如果能够从Google上Search到那是多么开心的一件事情啊! biggrin.gif

首先我们来分析一下我们的论坛的URLs:
http://bbs.netbuddy.org/index.php?act=ST&f...=4&t=403&arch=0

这个联结是xxbin登陆论坛后访问网络论坛中"Google正在INDEX我们的论坛"这张贴子时的URL

这个URL对Google来说最严重的莫过于URL中包含的""这样的字符串了,这个东东Google看见了肯定就不再理我们了,需要去掉,测试了一下,可能是因为cookie的原因,登陆用户不用""这样的字符串也能正常访问论坛,同时论坛也能够识别这个用户,这样的话最重要的问题就解决了。 smile.gif

URL可能变成这样:
http://bbs.netbuddy.org/index.php?act=ST&f...=4&t=403&arch=0

接下来就是&,?,=等等Google不喜欢的字符串了,如果我们能够把上面的URL转换成
http://bbs.netbuddy.org/index/act/ST/f/4/t/403/arch/0

那Google就会喜欢我们了! biggrin.gif

怎么转
首先,在根目录下建立一个index文件,内容如下:
CODE

<?php

require "conf_global.php";
$base_url = $INFO['board_url']."/index.php";  

$redirect = "";

if ( $_SERVER['PATH_INFO'] != "" )
{
       $c = 0;
       $redirect = "?";
       foreach( explode( "/", $_SERVER['PATH_INFO'] ) as $bit)
       {
               if ($bit != "")
               {
                       if ($c == 0)
                       {
                               $c++;
                               $redirect .= $bit.'=';
                       }
                       else
                       {
                               $c = 0;
                               $redirect .= $bit.'&';
                       }
               }
       }
}

header("Location: $base_url".$redirect);

exit();

?>



稍微懂一点php或者c的语法的人都能看出来,这个脚本是把类似
http://bbs.netbuddy.org/index/act/ST/f/4/t/403/arch/0
这样的URL重定向到
http://bbs.netbuddy.org/index.php?act=ST&f...=4&t=403&arch=0

我们的HTTP Server是Apache 2.0.43
在Apache 1.x版本,对于
http://bbs.netbuddy.org/index/act/ST/f/4/t/403/arch/0
的URL,首先apache会查找是否存在/index这样一个目录,若这个目录不存在,那么查找是否存在/index这样一个文件,如果存在这个文件,就把后面的字符串作为参数传递给/index这个文件,而Apache 2.0.43就改了一下,如果没有/index这个目录,那么就报404错误。 sad.gif 为了解决这个问题xxbin可在Google上查了很久,最后发现在Apache 2.0.43的配置文件中加入AcceptPathInfo On就可以解决这个问题。

最后,为了让apache知道这个没有任何扩展名的index文件是个php脚本,需要在配置文件或者.htaccess文件中加入下面的配置:

<Files index>
ForceType application/x-httpd-php
</Files>

重起apache之后,发现用http://bbs.netbuddy.org/index/act/ST/f/4/t/403/arch/0的连接可以正常访问论坛了,接下来的工作就是把论坛首页,论坛索引,贴子列表等等页面的连接从原来Google不喜欢的格式改成Search engine-friendly URLs,OK,大功告成!

(注:因为index脚本用的是Redirect,因此各位在地址栏看到论坛的连接还是那种Google讨厌的格式,但是论坛的真实联结(移动鼠标到某个联结,然后从状态栏看到的连接)基本上已经改成Search engine-friendly URLs了)

Firefox中自定义搜索引擎……

想给firefox添加https://版本的谷歌搜索引擎。搜了下发现:评价颇高的Search Engine Creator 不支持中文(等UTF-8);类似问题在找LaTeX编辑器的时候就碰到过了。剩...
  • stereohomology
  • stereohomology
  • 2016年09月30日 21:00
  • 1257

自己动手写搜索引擎(常搜吧历程二#索引#)(Java、Lucene、hadoop)

Lucene的核心索引类: 1、IndexWriter:建立索引的核心组件。 2、Directory:代表一个lucene索引项的位置。 3、Analyzer:对文本内容进行分析的抽象类,具体实...
  • shaopeng5211
  • shaopeng5211
  • 2013年03月17日 15:42
  • 1039

python中使用elasticsearch做为搜索引擎

#coding:utf-8 import pyes conn = pyes.ES(['127.0.0.1:9200'])#连接es conn.create_index('test-index')...
  • zhuguorong11
  • zhuguorong11
  • 2016年10月20日 21:42
  • 1383

UCD Search Engine Project summary

Split the string by BOOLEAN keywords: Example: split string by "AND" using System; namespace st...
  • zhangxiao86
  • zhangxiao86
  • 2012年07月13日 02:41
  • 161

Introduction to SEO Search Engine Optimisation practices

/*By Jiangong SUN*/ Search Engine Optimisation(SEO) is a very important concept for page ranking in...
  • garcon1986
  • garcon1986
  • 2013年01月21日 04:53
  • 972

#One paper per week# Search Engine Click Spam Detection Based on Bipartite Graph Propagation

论文题目:Search Engine Click Spam Detection Based on Bipartite Graph Propagation 论文地址:http://dl.acm.org/...
  • John159151
  • John159151
  • 2015年05月09日 17:45
  • 637

Search Engine Reputation Management

Search Engine Reputation Management, also known as SERM. Search engine reputation management strat...
  • seocube
  • seocube
  • 2014年10月13日 08:49
  • 318

Create Your Own Search Engine with Python 用python创建你自己的搜索引擎(三)

Create Your Own Search Engine with Python   用python创建你自己的搜索引擎(三)  上一篇是什么来着?想想,对了,工作原理和基本算法简介,这...
  • sndnyangd
  • sndnyangd
  • 2012年08月22日 19:53
  • 1882

Using robots.txt To Control Search Engine Spiders

 转自 http://www.activewebhosting.com/faq/web-robots.html What are robots and spiders? Search engines...
  • qinboecjtu
  • qinboecjtu
  • 2011年01月11日 10:18
  • 401

数学之美系列十七:闪光的不一定是金子 谈谈搜索引擎作弊问题(Search Engine Anti-SPAM)

自从有了搜索引擎,就有了针对搜索引擎网页排名的作弊(SPAM)。以至于用户发现在搜索引擎中排名靠前的网页不一定就是高质量的,用句俗话说,闪光的不一定是金子。 搜索引擎的作弊,虽然方法很多,目的只有一...
  • xiaohang20103
  • xiaohang20103
  • 2013年07月09日 10:31
  • 518
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Search engine-friendly URLs
举报原因:
原因补充:

(最多只允许输入30个字)