作为一种简单而高效的Server端嵌入语言,PHP已成为Internet上最流行的一种动态网站制作工具。它不但能够对多种数据库提供良好支持,而且与其它的Server端脚本语言如ASP相比,PHP免费开放源码并且提供跨平台的支持,这使它能够轻易适应当今网络中各种异质的网络环境;可让网页制作人员能够非常快捷、方便地制作出功能强大的动态Web页面。
动态网页的优势
随着计算机和互联网技术的飞速发展,由于静态网页没有数据库的支持,不但增加工作量,而且由于缺乏交互功能,当网站有大量信息及功能较多时,完全依靠静态网页是无法实现的,于是动态网页就成为网站维护的必然要求。动态网页具有良好的交互性、数据库查询、可与HTML以外的文件进行交互、缩短查询时间、提高浏览效率等静态网页所无法比拟的优点。
搜索引擎市场的潜力
据权威统计,全球约有80%的网络用户通过搜索引擎来查找资料或产品信息,此外据美国专业搜索引擎服务公司iProspect调研结果表明:逾60%的雅虎用户和72%的Google用户在进行查询时,都会点击自然搜索结果来寻找他们需要的讯息。显然,网站要想获得尽可能多的访问量,搜索引擎无疑是最理想、也是最直接的目标。
当动态网页遇上搜索引擎
虽然动态网页相比于静态页面拥有许多优势,但它在搜索引擎的检索上却碰了个大钉子。无论任何一家网站,尤其是那些以营销为目的的企业网站,没有谁会希望自己的网页无法被搜索引擎检索到。但事实上却是:动态网站设计的很多内容页面都无法得到搜索引擎的检索。
一般来说,搜索引擎会把动态网页地址中出现的“?”字符视做“停止标记”,在它之后的所有参数都会被忽略掉。例如对“index.php?category=x”的所有子页,搜索引擎最后检索到的URL只有一个,那就是index.php这一个页面。这样一来,动态网页就陷入了无法被搜索引擎发现和检索的尴尬境地,直接失去了被用户发现的机会和搜索引擎这样一个广阔的市场空间。
搜索引擎不支持动态网页的原因
动态网页是由数据库所驱动,这就使得搜索引擎将面对无数URL而被数据库套住陷入死循环的危险,这也就是我们所说的蜘蛛陷阱(Spider
Traps)。而且一旦Spider被网站套住,那么它对数据库的重复访问请求也会造成网站服务器系统的彻底瘫痪。鉴于此,搜索引擎对于动态网页中URL里包含“?”之后的字符一概不予读取。
PHP转化为HTML静态页面
虽然不能保证把每个动态页面都转化为静态的HTML文件,但如果网站是驻留在Apache服务器上,则只需一个简单的小脚本就可以把大多数动态页面都转换成HTML文件。
1.确定需要转换成后缀为HTML的PHP文件
我们的目标是那些名下包含动态子页较多的网页。以“index.php?category=x”为例,我们需要对“index.php”之后的动态子页进行转换。
例如,如果网站里有一个名为“Arts and
Crafts”的子目录,URL为“index.php?category=1”,其它子目录和这个URL只在最后的变量上不同,因此我们需要修改当index.php之后跟随变量时服务器对它的打开方式。
2.通知服务器在接受一个HTML页面的调用请求后打开一个PHP文件
我们需要在服务器上index.php所在的目录下放置一个.htaccess文本文件。.htaccess文件是Apache服务器上的一个目录配置设置文件,它提供了针对目录改变配置的方法,即在一特定的文档目录中放置一个包含一个或多个指令的文件(.htaccess文件),来作用于此目录及其所有子目录。.htaccess的功能包括设置网页密码、设置发生错误时出现的文件、改变主页文件名、禁止读取文件名、重新导向文件、增加MIME类别、禁止列目录下的文件等。
在需要针对目录改变服务器的配置,而对服务器系统没有root权限时,应该使用.htaccess文件。如果服务器管理员不愿意频繁修改配置,则可以允许用户通过.htaccess文件自己修改配置,尤其是ISP在一台机器上提供多个用户站点,而又希望用户可以自己改变配置的情况下,一般会开放部分.htaccess的功能给使用者自行设置。对于Vdeck用户来说,可能需要先创建一个文本文件,然后在管理面板将其更名为.htaccess。现在我们需要在服务器端指定一些变量。比方说,我需要把“?category=x”这个变量改成“directory-x.html”,这样就能消除动态页面无法被搜索引擎检索的问题。
在开始创建服务器变量前,我们需要先在这个新建的.htaccess文件中创建一个Rewrite Engine
(URL重写工具)。只需要在文件第一行写上
RewriteEngine
On
这就等于告诉服务器我们要改变一些文件的处理方式。接下来的一行就要指定重写规则:
RewriteRule
^directory-([0-9]*.* index.php?category=$1
[L,NC]
这个指令表明:只要接到URL中包含“directory-0”到“directory-9”的任意静态网页的页面调用请求,服务器将以“index.php?变量”地址返回给调用用户。
先别急着编辑下一条改写规则,我们有必要在更改实际的PHP页面之前先进行一下测试。我们可以对上面的"重写规则"进行测试。首先新开一个浏览器窗口,在地址栏中输入“directory-1.htm”或“directory-1.html”,如果我们看到的页面显示为“index.php?category=1”就表明改写规则工作正常。
3.让搜索引擎看到我们的静态化页面
现在,我们需要让搜索引擎能够看到我们经过“改头换面”的新的网页地址。那么,是不是需要赶紧把网站再向搜索引擎提交一遍呢?
不用这么费劲,我们只需打开PHP文件编辑一下就行了。不过在此之前,应记得将要修改的每个脚本都做个备份,将其存放在硬盘上。然后需要确定创建更改链接地址的程序的不同地方。最好在前端而不要在后台进行更改。PHP文件将会从.htaccess文件中得到形如“index.php?category=x”之类的信息。我们需要把这些动态生成的网页地址更改一下,并以静态化页面地址显示给用户和搜索引擎。即将所有URL中包含“index.php?category=”的部分替换为“directory-”,并加上.html后缀。
一旦发现待修改的区域,在更改后要随时检查有无错误。如果在脚本中有错误而没有发现,纠正起来是相当棘手的,尤其在对PHP编码不熟悉的情况下。