Apache 版本:2.2.8。
httpd.conf 内容中:
LoadModule rewrite_module modules/mod_rewrite.so #装载重写模块
allowoverride all #表示允许 .htaccess 文件内的重写规则覆盖全局配置的规则。
如果没有安装 mod_rewrite,可以重新编译 Apache,并在原有 configure 的内容中加入 –enable-rewrite=shared,然后再在 Apache 配置文件中加入上述代码即可。
然后在网站根目录建立 .htaccess 文件,内容如下:
rewriteengine on
rewritebase /
rewriterule ^new_realty-([0-9])+/.htm$ show_new_realty.php?id=$1
正则表达式规则解释:
计划把根目录下的形如“show_new_realty.php?id=数字”的链接变为形如“new_realty-数字.htm”。
规则后加 [R=301],则是永久重定向,这里不应该加。
正则表达式中的“$1”是正则表达式变量,代表匹配结果中的第一部分内容,在这里就是数字了。
修改 httpd.conf 文件后必需重启 Apache 服务。修改 .htaccess 文件不用重启 Apache 服务。
于是,打开 http://www.jfangzi.com/new_realty-500.htm 的链接,静默的获取了
http://www.jfangzi.com/show_new_realty.php?id=500 的内容,浏览器地址栏的网址并没有显式的变为动态调用页面的形式。
可以用 httpWatch 观察浏览器返回的 http 协议的状态信息,也没有返回 300/301/302 等重定向状态码。
这里的关键就是书写正则表达式了。
参考某论坛程序的伪静态化规则:
RewriteEngine On
RewriteRule ^(.*)/archiver/((fid|tid)-[/w/-]+/.html)$ $1/archiver/index.php?$2
RewriteRule ^(.*)/forum-([0-9]+)-([0-9]+)/.html$ $1/forumdisplay.php?fid=$2&page=$3
RewriteRule ^(.*)/thread-([0-9]+)-([0-9]+)-([0-9]+)/.html$ $1/viewthread.php?tid=$2&extra=page/%3D$4&page=$3
RewriteRule ^(.*)/space-(username|uid)-(.+)/.html$ $1/space.php?$2=$3
RewriteRule ^(.*)/tag-(.+)/.html$ $1/tag.php?name=$2
RewriteRule ^/home/(space|network)-(.+)/.html$ /home/$1/.php/?rewrite=$2
RewriteRule ^/home/(space|network)/.html$ /home/$1/.php
RewriteRule ^/home/([0-9]+)$ /home/space/.php/?uid=$1
文章标题:《“金房网”(http://www.jfangzi.com)的 Apache 静态化配置》
作者:张庆(网眼) 西安 PHP 教育培训中心 2010-6-14
来自“网眼视界”:http://blog.why100000.com
作者微博:http://t.qq.com/zhangking
“十万个为什么”电脑学习网:http://www.why100000.com