Search engine-friendly URLs

2023-12-14 03:32
文章标签 engine search urls friendly

本文主要是介绍Search engine-friendly URLs,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

话题不得不从很早前就开始,原来的论坛 ( 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了)

这篇关于Search engine-friendly URLs的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/490987

相关文章

AI基础 L9 Local Search II 局部搜索

Local Beam search 对于当前的所有k个状态,生成它们的所有可能后继状态。 检查生成的后继状态中是否有任何状态是解决方案。 如果所有后继状态都不是解决方案,则从所有后继状态中选择k个最佳状态。 当达到预设的迭代次数或满足某个终止条件时,算法停止。 — Choose k successors randomly, biased towards good ones — Close

JavaScript正则表达式六大利器:`test`、`exec`、`match`、`matchAll`、`search`与`replace`详解及对比

在JavaScript中,正则表达式(Regular Expression)是一种用于文本搜索、替换、匹配和验证的强大工具。本文将深入解析与正则表达式相关的几个主要执行方法:test、exec、match、matchAll、search和replace,并对它们进行对比,帮助开发者更好地理解这些方法的使用场景和差异。 正则表达式基础 在深入解析方法之前,先简要回顾一下正则表达式的基础知识。正则

插件maven-search:Maven导入依赖时,使用插件maven-search拷贝需要的依赖的GAV

然后粘贴: <dependency>    <groupId>mysql</groupId>    <artifactId>mysql-connector-java</artifactId>    <version>8.0.26</version> </dependency>

MongoDB学习—(1)安装时出现The default storage engine 'wiredTiger' is not available问题解决

MongoDB是NoSql类型的一种基于分布式文件存储的数据库,其存储方式与关系型数据库不同。其详细解释可见于[百科]。安装文件可从官网下载,官网:http://mongodb.org 我将下载的解压文件放到D盘的mongodb文件夹下,

Google Earth Engine——高程数据入门和山体阴影和坡度的使用

目录 山体阴影和坡度 对图像应用计算 应用空间减速器 高程数据 通过从“重置”按钮下拉菜单中选择“清除脚本”来清除脚本。搜索“elevation”并单击 SRTM Digital Elevation Data 30m 结果以显示数据集描述。单击导入,将变量移动到脚本顶部的导入部分。将默认变量名称“image”重命名为“srtm”。使用脚本将图像对象添加到地图: Map

广度优先搜索Breadth-First-Search

目录  1.问题 2.算法 3.代码 4.参考文献  1.问题         广度优先搜索,稍微学过算法的人都知道,网上也一大堆资料,这里就不做过多介绍了。直接看问题,还是从下图招到一条从城市Arad到Bucharest的路径。  该图是连通图,所以必然存在一条路径,只是如何找到最短路径。 2.算法 还是贴一个算法的伪代码吧: 1 procedu

【0323】Postgres内核之 hash table sequentially search(seq_scan_tables、num_seq_scans)

0. seq scan tracking 我们在这里跟踪活跃的 hash_seq_search() 扫描。 需要这种机制是因为如果扫描正在进行时发生桶分裂(bucket split),它可能会访问两次相同的条目,甚至完全错过某些条目(如果它正在访问同一个分裂的桶中的条目)。因此,如果正在向表中插入数据,我们希望抑制桶分裂。 在当前的使用中,这种情况非常罕见,因此只需将分裂推迟到下一次插入即可。

试用 Houdini Engine Python API

介绍 hapi 这个python包 是HoudiniEngine的一层python封装。 使用python的优势是灵活性,因为C代码总需要编译,使得迭代较慢。 Tips: hapi中的内容总可以查阅HoudiniEngine的文档,因为概念和函数是相同的。 使用环境 1. Houdini编辑器内:Python Shell 在其中可以 import hapi: 2. Houd

翻译Houdini官方对UE4新版插件的介绍:Houdini Engine for Unreal - V2

原视频:Houdini For Unreal - YouTube 目录 介绍0. 总览1. 简介HoudiniEngine2. UE4的HoudiniEngine - 第二版为什么要做“第二版” ?What's new? - 核心What's new? - 输出(1)What's new? - 输出(2)What's new? - 输入What's new? - 参数What's new?

Android Settings搜索Search方案分析

Android开发会遇到一些自写界面需要允许被搜索,或者三方应用挂靠在Settings,用户也希望能被搜索。 在知道怎么添加之前,得先了解下整个框架,才能更好地加入我们自己的代码。   这里稍微整理了下整个search database数据如何索引加载流程。 Settings搜索界面是由SearchFragment展现,当用户在Settings主页中点击搜索图标,会启动到SearchAc