Keep on going, never give up.

网站基础:URL伪静态化概念与常见方法

本文介绍URL伪静态化概念及常见解决方法,很多网友都对URL伪静态很感兴趣,却对URL伪静态规则编写感到头疼,除了少部分有精力深入研究的网友,大部分人都是每次需要时才会“临时抱佛脚”,进行大量的查阅后才能解决,天缘也是一样,不是专业做网页网站的,也从没花心思在深入研究上,所以很多细节问题也是现学现卖,下面就来看一下伪静态的几个基础知识点。

一、什么是URL伪静态

URL伪静态就是通过对动态网页进行URL处理(重写),从而实现看起来像是静态URL页面(而实际网页目录或路径中没有该页面)的方法,表现形式主要是去掉动态网页QUERY参数,还有可以让URL看起来更加有序条理。举个例子:

http://www.example.com/test.php?cate=soft&page=2,这是典型的动态页面。

经过伪静态处理,可能变成http://www.example.com/test/soft/index/2,如果有多个类似页面,URL看起来就会更加舒服。

伪静态技术在Wordpress、Discuz、Z-BLOG及各种CMS中都有运用,伪静态的目的无非是看起来更加舒服,据说对搜索引擎更加友好,天缘不懂SEO就不说了。

从URL结构角度伪静态方法有两种:

1、不需要Web 服务器Internet Information Services (IIS) 或APACHE支持,直接使用动态程序进行伪静态处理

该类URL有明显的特点就是带有实际访问的php文件名,比如:

http://www.example.com/test.php/abc_1_2.html

http://www.example.com/test.php/5,1,2.html

上面两个URL中的test.php必须存在,然后就使用test.php进行伪静态处理。

2、需要Web 服务器Internet Information Services (IIS) 或APACHE支持

该类URL明显特点就是实际访问的URL服务器上根本不存在,如果不进行为静态化,将会报告404错误,比如http://www.example.com/test/,虽然服务器上存在test.php,但是并不能映射到test.php处理,所以就需要web服务器直接在前端拦截并映射转向到动态页进行处理。

二、URL伪静态常见方法

下面说一下PHP伪静态方法(当然其它网页程序ASP、JSP等一样可以静态化,从原理上讲甚至连网页程序都不需要,直接可以写应用程序插件进行拦截处理,模拟Web向外发送数据),如果你遇到需要静态化,请先考虑将要为静态化的URL格式,然后再根据上文说明确定是采用程序处理还是Web服务器插件处理。下面看一下上文三种方法的处理示例。

1、直接使用程序分析实现为静态化

PHP为静态化示例:

<?php

//文件名:test.php

//示例分析:http://www.example.com/test.php/5,1.html

//echo '<pre>';

//print_r($_SERVER);

$ur=$_SERVER['PATH_INFO']; 

echo 'PATH_INFO:'.$ur."<br>";

$varArr=explode(",",substr($ur,1,-5));

$cateId=$varArr[0];

$page=$varArr[1];

echo 'cateId='.$cateId.'<br/>';

echo 'curpage='.$page.'<br/>';

echo '...伪静态后续处理...';

?>

PATH_INFO:/5,1.html
cateId=5
curpage=1

......伪静态后续处理......

使用该方法可以实现翻页分类等等几乎所有的伪静态功能,唯一的缺点就是URL中必须带上test.php文件名(示例),为了更好看一下,文件名后最好采用/号分割,当然也可以使用?|,_等符号,只要便于浏览、分析和处理即可。

2、使用IIS的用户实现伪静态

如果Web服务器是使用iis系统,则可以通过使用IIS Rewrite模块实现伪静态,IIS Rewrite和下文的Mod Rewrite功能类似,要使用ISAPI_Rewrite,可以下载ISAPI_Rewrite(有支持Windows NT4/2000/XP/2003/2008/Vista等版本),有Lite精简版和Full完全版,前者免费只能对服务器全局伪静态配置,后者可以对单个网站伪静态配置,下载及安装参考地址:

http://www.isapirewrite.com/http://www.isapirewrite.com/docs/#install

下载后格式是msi可执行文件,直接双击安装。如果是Vista系统,还需要提前在系统添加删除程序中安装IIS6、万维网Web服务ISAPI过滤器等,安装完成后,重要的有文件ISAPI_Rewrite.dll和httpd.ini两个,打开Internet 信息服务——右键——Web站点属性,点击ISAPI 筛选器选项卡,添加筛选器,名称可以随意填(比如Rewrite),路径指定为 ISAPI_Rewrite.dll,然后确定即可。

先测试一下为静态化是否生效,然后我们就可以编辑文件httpd.ini,增加自己的伪静态规则,具体写法可以参考:http://www.isapirewrite.cn/docs

3、配置APACHE实现PHP伪静态

如果使用APACHE服务器(官网:http://www.apache.org/),还可以通过使用APACHE模块mod_rewrite实现伪静态,该模块可以对URL的所有部分进行操作,包括路径信息,可以在服务器级(httpd.conf)和目录级(.htaccess,) 配置,并且都有效。重写操作结果可以是内部子处理,也可以是外部请求的转向,甚至还可以是内部代理处理,功能非常强大,大部分人是只用到一点点,查一查就可以了够用即可。

httpd.conf和.htaccess权利和优先级

.htaccess是APACHE的分布式配置文件,httpd.conf权利最大、优先级也最高,但如果httpd.conf想放权,也可以配置授权让.htaccess覆盖所有全局配置,httpd.conf决定.htaccess是否生效和生效范 围,.htaccess是基于目录设置,可以被上下级目录覆盖或继承,这一点需要注意。

APACHE设置参考:http://www.everalan.com/manu/apache/misc/rewriteguide.html

几个常见问题:

1、使用.htaccess会加重服务器负担,不过小网站都不用担心,如果流量够大也不用担心,还有其它均衡技术来应对。

2、.htaccess文件必须为ASCII格式,在Windows平台上要命名该文件可以通过cmd命令行(rename htaccess.txt .htaccess)或通过FTP方式命名。

3、.htaccess中可以使用#号开头注释一行,语法对大小写不敏感,连续多个空格会自动忽略。

常见PHP伪静态指令、IIS Rewrite安装图解、APACHE配置等具体内容,天缘会视需要后续补充专题。

更多文章:

PHP相对路径和绝对路径常见处理方法

PHP常用正则表达式收集整理

PHP字符串正则替换及剖分函数比较

PHP不执行短标签却源码显示输出的问题定位

网页语言ASP.NET、PHP、JSP的特性区别及选择建议

相关评论(0):  

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

订阅博客

最新文章

本站采用创作共用版权协议, 要求署名、非商业用途和保持一致. 转载也必须遵循“署名-非商业用途-保持一致”的创作共用协议. 返回顶部
Copyright@2005-2016 Metsky.com, All rights Reserved.