(1)在SEOPHP文件夹中创建文件product.php,并添加以下代码:
<?php
//display product details
echo "you have selected product #".$_GET['product_id'];
?>
(2)加载 http://seophp.example.com/product.php?product_id=3 测试这个简单的PHP脚本。
(3)在seophp文件夹中创建文件.htaccess,并添加以下代码。在接下来的小节中将解释它们的功能。
RewriteEngine On
RewriteRule ^my-super-product\.html$ /product.php?product_id=123
这里有个小细节值得关注。.htaccess文件从技术上讲,文件名字为空,而htaccess是后缀名。根据Windows系统设置不同,用window资源管理器不一定能够看见这个文件。
(4)将浏览器再次切换回来,这次加载http://seophp.example.com/my-super-product.html。
在此如果得到一个服务器信息,极有可能是因为mod_rewrite模块没有正确启动,请确认在httpd.conf中启动mod_rewirte后已经重启Apache服务器。从Apache的日志目录打开error.log文件,可以读取错误的相关细节。
恭喜!在mod_rewrite的世界里,你已经成功地迈出了第一步!这个例子真的很简单,并且没有什么实际价值——至少与稍后要学习的相比!但是首先需要充分理解URL重写的基础。
下面开始创建一个非常简单的PHP脚本,它通过查询字符串接收一个数字的参数。可以想象,如果要将与查询字符串参数product_id提及的ID所指产品的很多相关细节在网页上显示,那将是一个较为复杂的网页。但是现在,只要简单显示一个文本信息,来确认ID被正确地从查询字符串中读取出来就够了。这个product.php脚本真是非常简单啊!以下是它的代码:
<?php
echo 'You have selected product #'.$_GET['product_id'];
?>
即使对PHP是个新手,这个脚本也很容易理解。显示命令echo被用来输出文本,而$_GET['product_id']告诉PHP读取在查询字符串中包含的product_id参数的值。
在测试了product.php脚本的工作之后,下面将继续访问这个相同的脚本,但是要通过在服务器上并不物理存在的URL地址。这将通过URL重写来完成,而且将通过增加一条由mod_rewrite模块来处理的规则来实现。
在phpseo文件平中创建的.htaccess文件包含两行程序代码,第一行是启用URL重写引擎:
RewriteEngine On
第二行详细说明用mod_rewrite命令RewriteRule实现重写规则。可以用这个命令来让mod_rewrite将my-super-product.html转换为product.php?product_id=123。在RewriteRule命令前的那行代码是注释。注释行的行首使用"#"字符来标示,mod_rewrite解析器将忽略注释行。
#Translate my-super.product.html to /product.php?product_id=123
RewriteRule ^my-super-product\.html$ /product.php?product_id=123
RewriteRule命令的基本用法有两个参数。第一个参数表示需要被重写的原始URL地址,第二个参数说明了前者将被重写成什么。描述原始URL地址的模式使用“^”和“$”符号分隔,以保证在匹配文本之前或之后没有其他字符。