总算对apache的rewrite模块有了更深刻的体会,觉得这个功能确实太强大了。
将所有的url都转为静态,我不知道这在访问速度上的损失有多大。
个人认为不会有较大损失,因为这基本上取决服务器对正则表达式的解析做的够不够好。
而正则表达式经过很长时间的发展,已经比较完善了。
下面就是偶最近忙乎的结果,马马乎乎可以运行了。
RewriteEngine on
RewriteRule ^([A-Za-z_-]{1,})\.html$ index.php?cid=$1
RewriteRule ^([A-Za-z_-]{1,})\/p([0-9]{1,})\.html$ index.php?cid=$1&p=$2
RewriteRule ^([A-Za-z_-]{1,})\/([A-Za-z_-]{1,})\.html$ index.php?cid=$1&sid=$2
RewriteRule ^([A-Za-z_-]{1,})\/([A-Za-z_-]{1,})\/p([0-9]{1,})\.html$ index.php?cid=$1&sid=$2&p=$3
RewriteRule ^result_([A-Za-z]{1,})_p([0-9]{1,})\.html$ search.php?keywords=$1&p=$2
RewriteRule ^book_(.+)\.html$ view.php?id=$1
熟悉正则的人一眼就明白了吧,……-……
url看上去都变成了.html,这确实干净多了,另一方面,对于php程序来说,外部注入的难度也提高了,从很大程度上提高了安全性。
正则表达式真是个好东西,偶对发明它的人崇拜死了
偶在想,如果再严格点,对.php的后缀进行过滤,那岂不更安全,呵呵