4.8.2 怎样静态化URL

最常见的方法是使用服务器的URL重写模块,在LAMP(Linux+Apache+MySQL+PHP)服务器上一般使用mod_rewrite模块,Windows服务器也有功能相似的ISAPI Rewrite等模块。以LAMP服务器为例,要想把URL:

http://www.domain.com/products.php?id=123

静态化为:

http://www.domain.com/products/123

需要启用服务器mod_rewrite模块,然后在.htaccess文件中写入如下代码:

RewriteRule /products/([0-9]+) /products.php?id=$1

URL重写代码基于正则表达式,每个网站的动态URL结构不同,服务器设置也可能不同,代码也就不同。正则表达式的写法比较复杂,千变万化,通常需要程序员编写。在写URL静态化代码时必须非常小心,错了一个字符,多了一个斜杠等微小的不同,都可能造成灾难性的后果。我本人就遇到过这样的案例。

严格来说,这里所说的URL静态化应该称为“伪静态化”,也就是说服务器上还是不存在相应的HTML文件,用户访问时还是动态生成页面,只不过通过URL重写技术使网址看起来像是静态的。也有的CMS系统可以实现真正静态化,编辑增添产品或文章后,系统会自动生成真实存在的静态的HTML文件。对搜索引擎来说,真正的静态与伪静态没有区别。