利用URL REWRITE机制实现静态链接

Search Engine
Friendly的UCR-VL设计版权表明:能够随性所欲转发,转载时请必须以超链接方式注明作品原本出处和笔者音讯及本证明_url.html关键词:”url
rewrite” mod_rewrite isapirewrite path_info “search engine
friendly”内容摘要:别的随着互联网络的内容以惊人速度的滋长也特别出色了搜索引擎的要紧,要是网址想更加好地被找寻引擎收音和录音,网址设计除了面向顾客友好外,寻觅引擎友好的规划也是老大关键的。步入寻找引擎的页面内容越来越多,则被顾客用不相同的第一词找到的可能率越大。在谷歌的算法考察一文中涉嫌四个站点被Google索引页面包车型地铁数据实在对PageRank也可能有自然影响的。由于Google出色的是一体互连网中相对静态的有些,
链接地址相对固化的静态网页相比符合被谷歌索引,因而不稀少关面向搜索引擎
U冠道L设计优化(UHavalI
PrettyState of Qatar的稿子中涉及了累累用到自然机制将动态网页参数形成像静态网页的花样:举个例子能够将:产生:实现方式根本有2种:基于url
rewrite 基于path_info 把U智跑I地址用作参数字传送递:U索罗德L
REW哈弗ITE最简便易行的是依赖各类WEB服务器中的UGL450L重写转向模块的UHavalL转变:这样大概能够不修改程序的兑现将
news.asp?id=234 那样的链接映射成
news/234.html,从外侧看上去和静态链接相符。Apache服务器上有三个模块:mod_rewrite:U路虎极光L
REWRAV4ITE功效之强盛丰裕写上一本书。当自己索要将将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也可以有对应的REW福特ExplorerITE模块:譬喻ISAPI
REWHighlanderITE和IIS
REW卡宴ITE,语法都是依据正则表达式,由此配置大致和apache的mod_rewrite是同一的:比对于某三个精简利用能够是:RewriteRule
/news/(/d+卡塔尔/.html /news/news/.php/?id=$1 [N,I]这么就把 映射到了
三个更通用的能够将有着的动态页面进行参数映射的表明式是:把 表现存。RewriteRule (.*?/.php)(/?[^/]*)?/([^/]*)/([^/]*)(.+?)?
$1(?2$2&:/?)$3=$4?5$5: [N,I]经过ULacrosseL
REWTiguanITE还只怕有三个功利就是藏身后台完成,那在后台应用平台的动员搬迁时特别有效:当从asp迁移到java平台时,对于前台顾客来讲,更本心得不到后台应用的变动。比方大家需求将运用从news.asp?id=234迁移成news.php?query=234时,前台的突显能够直接保持为
news/234.html。从落到实处利用和前台表现的分别:保持了UHavalL的安定团结,而选拔mod_rewrite以至足以把供给转载到别的后台服务器上。基于PATH_INFO的U福特ExplorerL美化Url美化的其余一个办法便是依赖PATH_INFO:PATH_INFO是三个CGI
1.1的科班,通常发掘众多跟在CGI前面包车型大巴”/value_1/value_2″就是PATH_INFO参数:比如,中:$PATH_INFO
= “/man/ls”PATH_INFO是CGI标准,由此PHP
Servlet等都有的支持。例如Servlet中就有request.get帕特hInfo(卡塔尔国方法。注意:/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/param第22中学解析出$param1
$param2那2个参数if ( isset($_SERVER[“PATH_INFO”]) ) { list($nothing,
$param1, $param2) = explode(‘/’,
$_SERVER[“PATH_INFO”]卡塔尔(قطر‎;}怎么样蒙蔽应用:譬喻.php,的增加名:在APACHE中如此布署:FilesMatch “^app_name$” ForceType
application/x-怎么着更像静态页面:app_name/my/app.html解析的PATH_INFO参数的时候,把最后一个参数的尾声5个字符“.html”截断就可以。注意:APACHE第22中学缺省是不准PATH_INFO的,要求设置AcceptPathInfo
on非常是本着使用虚构主机顾客,无权安装和安排mod_rewrite的时候,PATH_INFO往往就成了独一的挑精拣肥。OK,那样现在看到形似于如此的网页你就了解或许是
article/show.php?id=234这么些php程序生成的动态网页,超级多站点表面看上去恐怕有无数静态目录,其实很有相当的大可能都以应用1,2个程序实现的源委发表。比方超多WIKIWIKI系统都使用了那些机制:整个体系就一个大致的wiki程序,而看上去的目录其实都以这些应用拿前边之处作为参数的查询结果。利用基于MOD_REWRITE/PATH_INFO

CACHE服务器的减轻方案对原来的动态发表系统实行改建,也得以大大减弱旧有系统进级到新的剧情管理种类的本钱。何况有助于了搜寻引擎收音和录音入索引。
附:怎么着在IIS上接收PHP协助PATH_INFOPHP的ISAPI方式安器械忘:只试成
php-4.2.3-Win32解包目录========php-4.2.3-Win32.zip
c:/phpPHP.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/卡塔尔: failed to create stream: No such
file or directory in Unknown on line 0Warning: Unknown(卡塔尔: Failed opening
‘C:/CheDong/Downloads/ariadne/’ for inclusion
(include_path=’.;c:/php4/pear’卡塔尔国 in Unknown on line
0安装ariadne的PATCH==================甘休IIS服务net stop
iisadminftp://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已经改革,照常安装就可以。参照他事他说加以考察资料:U大切诺基L
Rewrite文书档案:_rewrite.html_rewrite.html找出引擎友好的U哈弗L设计大概这几个U讴歌ZDXL原来即是articel.php?id=485二个依照PATH_INFO的开源内容管理连串尚未索引什么?的PageRank表达:

乘机互联英特网的剧情以惊人速度的增高也更是卓绝了寻找引擎的关键,要是网址想更加好地被搜索引擎收音和录音,网址设计除了面向顾客友好(User
Friendly)外,搜索引擎友好(Search Engine
Friendly)的陈设也是极度首要的。步入寻找引擎的页面内容越来越多,则被客商用分裂的基本点词找到的可能率越大。在Google的算法考察一文中涉及二个站点被谷歌(GoogleState of Qatar索引页面包车型客车多少实在对PageRank也许有自然影响的。由于谷歌特出的是全方位互联网中相对静态的一些(动态网页索引量一点都超小),链接地址相对牢固的静态网页相比切合被Google索引(怪不得好些大网址的邮件列表归档和BLOG按日期归档的文书档案很容被搜的到),因此不菲有关面向搜索引擎
URubiconL设计优化(UWranglerI
PrettyState of Qatar的稿子中关系了好些个使用早晚机制将动态网页参数形成像静态网页的款型:
举个例子能够将:
http://phpunixman.sourceforge.net/index.php?mode=man¶;meter=ls
变成:

 

完结方式首要有2种:

基于url rewrite
IIS的ISAPI REWRITE下载(免费)
基于path_info
把U索罗德I地址用作参数字传送递:UCR-VL REWGL450ITE

最简单易行的是依照各个WEB服务器中的ULacrosseL重写转向(Rewrite)模块的UGL450L转换:
如此大致能够不改换程序的兑现将 news.asp?id=234 那样的链接映射成
news/234.html,从外围看上去和静态链接同样。Apache服务器上有一个模块(非缺省):mod_rewrite:U中华VL
REW揽胜极光ITE功用之强盛丰富写上一本书。

当本身需求将将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也许有相应的REWHighlanderITE模块:举个例子ISAPI REW陆风X8ITE和IIS
REWQX56ITE,语法皆以基周振天则表明式,因而配置大约和apache的mod_rewrite是均等的:

比对于某叁个粗略利用能够是:
RewriteRule /news/(d+).html /news/news.php?id=$1 [N,I]
与上述同类就把 映射到了

一个更通用的能够将具有的动态页面举办参数映射的表达式是:

表现成 。
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如此的链接待上访谈原来的动态页面了。
经过UEscortL REWEnclaveITE还会有一对平价:

隐蔽后台完结:那在后台应用平台的搬迁时充裕低价:当从asp迁移到java平台时,对于前台顾客来讲,根本体会不到后台应用的生成;
简化数据校验:因为像(d+卡塔尔(قطر‎那样的参数,能够使得的决定数字的格式以至位数;
举个例子说我们要求将动用从news.asp?id=234迁移成news.php?query=234时,前台的表现能够一向维持为
news/234.html。从落实选拔和前台表现的分离:保持了UGL450L的和谐,而选取mod_rewrite以致能够把诉求转载到任何后台服务器上。

基于PATH_INFO的URL美化
Url美化的其它三个艺术正是依赖PATH_INFO:
PATH_INFO是叁个CGI
1.1的正统,平时开掘多数跟在CGI后边的”/value_1/value_2″就是PATH_INFO参数:
比如,中:$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/param第22中学分析出$param1
$param2这2个参数
if ( isset($_SERVER[“PATH_INFO”]) ) {
list($nothing, $param1, $param2) = explode(‘/’,
$_SERVER[“PATH_INFO”]);
}

怎么着掩没应用:例如 .php,的强盛名:
在APACHE中如此布署:

ForceType application/x-httpd-php

怎么更像静态页面:app_name/my/app.html
解析的PATH_INFO参数的时候,把最后三个参数的最终5个字符”.html”截断就可以。
注意:APACHE第22中学缺省是不许PATH_INFO的,供给设置
AcceptPathInfo on

非常是针对利用虚拟主机顾客,无权安装和陈设mod_rewrite的时候,PATH_INFO往往就成了独一的抉择。

OK,那样之后见到相似于那般的网页你就精晓可能是
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:phpphp.ini-dist 到 c:winntphp.ini

配备文件涉及

安分守纪install.txt中的表达配置文件涉及

运维库文件

复制 c:phpphp4ts.dll 到 c:winntsystem32php4ts.dll

那般运转后:会意识php把PATH_INFO映射到了物理路线上
Warning: Unknown(C:CheDongDownloadsariadnewwwtest.phppath):
failed to create stream: No such file or directory in Unknown on line 0

Warning: Unknown(): Failed opening
‘C:CheDongDownloadsariadnewwwtest.phppath’ for inclusion
(include_path=’.;c:php4pear’) in Unknown on line 0

安装ariadne的PATCH

停止IIS服务
net stop iisadmin

覆盖原有的c:phpsapiphp4isapi.dll

注:
ariadne是多少个依照PATH_INFO的原委揭橥系统,
PHP 4.3.2 RC2中CGI模式的PATH_INFO已经修正,照常安装就能够。

参照他事他说加以侦查资料:
URL Rewrite文档:
ISAPI REWRITE文档
IIS的ISAPI REWRITE下载(免费)

研究引擎友好的UMuranoL设计

恐怕那么些U翼虎L原本就是articel.php?id=485

一个基于PATH_INFO的开源内容管理连串

发表评论

电子邮件地址不会被公开。 必填项已用*标注