Skip to content
  • 龙舞天翔小站
  • 知食汇

龙舞天翔资源共享

BWTECH DOCS CENTER

龙舞天翔资源共享
  • 资源共享首页
  • 网赚研究
    • 币圈及区块链游戏
  • 金融与管理
  • 网站开发建设
  • 网络营销优化
  • 精彩网文
  • 汽车生活
  • 德州扑克
  • 兴趣主题
  • Toggle search form

Search Engine Friendly的URL设计

Posted on 2004-04-142021-08-17 By 龙舞天翔 Search Engine Friendly的URL设计无评论

随着互联网上的内容以惊人速度的增长也越来越突出了搜索引擎的重要性,如果网站想更好地被搜索引擎收录,网站设计除了面向用户友好(User Friendly)外,搜索引擎友好(Search Engine Friendly)的设计也是非常重要的。进入搜索引擎的页面内容越多,则被用户用不同的关键词找到的几率越大。在Google的算法调查一文中提到一个站点被Google索引页面的数量其实对PageRank也是有一定影响的。由于Google 突出的是整个网络中相对静态的部分(动态网页索引量比较小),链接地址相对固定的静态网页比较适合被Google索引(怪不得很多大网站的邮件列表归档和BLOG按日期归档的文档很容被搜的到),因此很多关于面向搜索引擎 URL设计优化(URI Pretty)的文章中提到了很多利用一定机制将动态网页参数变成像静态网页的形式:
比如可以将:
http://phpunixman.sourceforge.net/index.php?mode=man&parameter=ls
变成:
http://phpunixman.sourceforge.net/index.php/man/ls

实现方式主要有2种:

  • 基于url rewrite
    IIS的ISAPI REWRITE下载(免费)
  • 基于path_info

把URI地址用作参数传递:URL REWRITE

最简单的是基于各种WEB服务器中的URL重写转向(Rewrite)模块的URL转换:
这样几乎可以不修改程序的实现将 news.asp?id=234 这样的链接映射成 news/234.html,从外面看上去和静态链接一样。Apache服务器上有一个模块(非缺省):mod_rewrite:URL REWRITE功能之强大足够写上一本书。

当我需要将将news.asp?id=234的映射成news/234.html时,只需设置:
RewriteRule /news/(\d+)\.html /news\.asp\?id=$1 [N,I]
这样就把 /news/234.html 这样的请求映射成了 /news.asp?id=234
当有对/news/234.html的请求时:web服务器会把实际请求转发给/news.asp?id=234

而在IIS也有相应的REWRITE模块:比如ISAPI REWRITE和IIS REWRITE,语法都是基于正则表达式,因此配置几乎和apache的mod_rewrite是相同的:

比对于某一个简单应用可以是:
RewriteRule /news/(\d+)\.html /news/news\.php\?id=$1 [N,I]
这样就把 http://www.chedong.com/news/234.html 映射到了 http://www.chedong.com/news/news.php?id=234

一个更通用的能够将所有的动态页面进行参数映射的表达式是:
把 http://www.myhost.com/foo.php?a=A&b=B&c=C
表现成 http://www.myhost.com/foo.php/a/A/b/B/c/C。
RewriteRule (.*?\.php)(\?[^/]*)?/([^/]*)/([^/]*)(.+?)? $1(?2$2&:\?)$3=$4?5$5: [N,I] 一下是真对phpBB的一个Apache mod_rewrite配置样例:
mod_rewrite和isapirewrite基本兼容,但是还是有些不同,比如:isapirewrite中”?”需要转义成”\?”,mod_rewrite不用,isapirewrite支持 “\d+” (全部数字),mod_rewrite不支持

    RewriteEngine On
    RewriteRule /forum/topic_(.+)\.html$  /forum/viewtopic.php?t=$1 [L]
    RewriteRule /forum/forum_(.+)\.html$ /forum/viewforum.php?f=$1 [L]   
    RewriteRule /forum/user_(.+)\.html$  /forum/profile.php?mode=viewprofile&u=$1  [L]

这样设置后就可以通过topic_1234.html forum_2.html user_34.html这样的链接访问原来的动态页面了。

通过URL REWRITE还有一些好处:

  • 隐藏后台实现:这在后台应用平台的迁移时非常有用:当从asp迁移到java平台时,对于前台用户来说,根本感受不到后台应用的变化;
  • 简化数据校验:因为像(\d+)这样的参数,可以有效的控制数字的格式甚至位数;

比如我们需要将应用从news.asp?id=234迁移成news.php?query=234时,前台的表现可以一直保持为 news/234.html。从实现应用和前台表现的分离:保持了URL的稳定性,而使用mod_rewrite甚至可以把请求转发到其他后台服务器上。

基于PATH_INFO的URL美化

Url美化的另外一个方式就是基于PATH_INFO:
PATH_INFO是一个CGI 1.1的标准,经常发现很多跟在CGI后面的”/value_1/value_2″就是PATH_INFO参数:
比如http://phpunixman.sourceforge.net/index.php/man/ls,中:$PATH_INFO = “/man/ls” PATH_INFO是CGI标准,因此PHP Servlet等都有的支持。比如Servlet中就有request.getPathInfo()方法。
注意:/myapp/servlet/Hello/foo的 getPathInfo()返回的是/foo,而/myapp/dir/hello.jsp/foo的getPathInfo()将返回的 /hello.jsp,从这里你也可以知道jsp其实就是一个Servlet的PATH_INFO参数。ASP不支持PATH_INFO,

PHP中基于PATH_INFO的参数解析的例子如下:
//注意:参数按”/”分割,第一个参数是空的:从/param1/param2中解析出$param1 $param2这2个参数
if ( isset($_SERVER[“PATH_INFO”]) ) {
    list($nothing, $param1, $param2) = explode(‘/’, $_SERVER[“PATH_INFO”]);
}

如何隐蔽应用:例如 .php,的扩展名:
在APACHE中这样配置:
<FilesMatch “^app_name$”>
    ForceType application/x-httpd-php
</FilesMatch>

如何更像静态页面:app_name/my/app.html
解析的PATH_INFO参数的时候,把最后一个参数的最后5个字符“.html”截断即可。
注意:APACHE2中缺省是不允许PATH_INFO的,需要设置
AcceptPathInfo on

特别是针对使用虚拟主机用户,无权安装和配置mod_rewrite的时候,PATH_INFO往往就成了唯一的选择。

OK,这样以后看见类似于http://www.example.com/article/234这样的网页你就知道可能是 article/show.php?id=234这个php程序生成的动态网页,很多站点表面看上去可能有很多静态目录,其实很有可能都是使用1,2个程序实现的内容发布。比如很多WIKIWIKI系统都使用了这个机制:整个系统就一个简单的wiki程序,而看上去的目录其实都是这个应用拿后面的地址作为参数的查询结果。

利用基于MOD_REWRITE/PATH_INFO + CACHE服务器的解决方案对原有的动态发布系统进行改造,也可以大大降低旧有系统升级到新的内容管理系统的成本。并且方便了搜索引擎收录入索引。

附:如何在IIS上利用PHP支持PATH_INFO

PHP的ISAPI模式安装备忘:只试成 php-4.2.3-Win32

解包目录
========
php-4.2.3-Win32.zip c:\php

PHP.INI初始化文件
=================
复制:c:\php\php.ini-dist 到 c:\winnt\php.ini

配置文件关联
============
按照install.txt中的说明配置文件关联

运行库文件
==========
复制 c:\php\php4ts.dll 到 c:\winnt\system32\php4ts.dll

这样运行后:会发现php把PATH_INFO映射到了物理路径上
Warning: Unknown(C:\CheDong\Downloads\ariadne\www\test.php\path): failed to create stream: No such file or directory in Unknown on line 0

Warning: Unknown(): Failed opening ‘C:\CheDong\Downloads\ariadne\www\test.php\path’ for inclusion (include_path=’.;c:\php4\pear’) in Unknown on line 0

安装ariadne的PATCH
==================
停止IIS服务
net stop iisadmin
ftp://ftp.muze.nl/pub/ariadne/win/iis/php-4.2.3/php4isapi.dll
覆盖原有的c:\php\sapi\php4isapi.dll

注:
ariadne是一个基于PATH_INFO的内容发布系统,
PHP 4.3.2 RC2中CGI模式的PATH_INFO已经修正,照常安装即可。

参考资料:
URL Rewrite文档:
ISAPI REWRITE文档
IIS的ISAPI REWRITE下载(免费)
http://httpd.apache.org/docs/mod/mod_rewrite.html
http://httpd.apache.org/docs-2.0/mod/mod_rewrite.html

搜索引擎友好的URL设计
http://www.sitepoint.com/article/485
说不定这个URL原来就是articel.php?id=485

一个基于PATH_INFO的开源内容管理系统
http://typo3.com/

Google的PageRank算法说明:
http://pr.efactory.de/

Post Views: 310
网络优化营销 Tags:SEO, 搜索引擎优化

文章导航

Previous Post: Google搜索从入门到精通v4.0【转】
Next Post: 中文搜索引擎技术揭密之系统架构

发表回复 取消回复

要发表评论,您必须先登录。

2025 年 5 月
一 二 三 四 五 六 日
 1234
567891011
12131415161718
19202122232425
262728293031  
« 3 月    
  • GOOGLE ADSENSE
  • GOOGLE专项研究
  • PHP程序开发
  • 互联网电商
  • 健康与生活
  • 兴趣主题
  • 国内搜索引擎推广
  • 基础与规则
  • 外汇投资
  • 学习资讯
  • 币圈及区块链游戏
  • 德州扑克技术
  • 房地产风云
  • 收集待分类
  • 数码摄影
  • 杂文&随笔
  • 案例研究分析
  • 理财生财
  • 精品小说
  • 系统及其他
  • 经营管理
  • 网站运营理念
  • 网络优化营销
  • 网页前端
  • 美食与菜谱
  • 股市投资
  • 驾驶及维修

AXIE AXIE INFINITY DEFI Google META robots.txt SEO WEB2.0 windows 中医 中文搜索 买车 企业网站 加密货币 威廉·奥尼尔 实战 彩票 德州扑克 成交量 打新 技术指标 抑郁症 捂股 排名 搜索引擎 搜索引擎优化 攻略 无限注 晃晃悠悠 橄榄油 泡菜 流动性挖矿 炒股 焦虑症 看盘 短线操作 穷人 网络营销 美食 股票 菜谱 虚拟货币 行情 配股 酸甜白萝卜

近期文章

  • 玻璃阳光房应该用什么胶来密封防水
  • 什么是数字孪生?跟数据可视化的关系又是什么?
  • 为跨链注入新动力,HotCross能否成为Web 3.0的基建?
  • 为什么中医会如此衰落?因为我们没有看清中医的本质!
  • 中医没落的最大原因是什么?德国教授一针见血!

近期评论

    归档

    • 2022 年 3 月
    • 2022 年 1 月
    • 2021 年 12 月
    • 2021 年 11 月
    • 2021 年 10 月
    • 2021 年 9 月
    • 2021 年 8 月
    • 2021 年 7 月
    • 2021 年 4 月
    • 2016 年 12 月
    • 2012 年 1 月
    • 2008 年 1 月
    • 2006 年 3 月
    • 2006 年 2 月
    • 2005 年 12 月
    • 2005 年 11 月
    • 2005 年 10 月
    • 2005 年 3 月
    • 2005 年 1 月
    • 2004 年 12 月
    • 2004 年 10 月
    • 2004 年 9 月
    • 2004 年 8 月
    • 2004 年 7 月
    • 2004 年 6 月
    • 2004 年 4 月
    • 2004 年 3 月

    其他操作

    • 登录
    • 条目 feed
    • 评论 feed
    • WordPress.org

    Copyright © 2021 龙舞天翔资源共享.

    Powered by PressBook WordPress theme