最近在做php的项目要用到url rewrite的功能,由于我对于url rewrite是一片空白,所以艰难地从网上找资料学习。但是网上的资料都不是很系统,反正我单纯地看几篇文章是没弄通,只好自己慢慢总结了。
首先要让apache支持url rewrite。做法就算是在apache里面打开http.conf这个配置文件找到下面这行
#LoadModule rewrite_module modules/mod_rewrite.so
去掉前面的#。
然后让Apache支持.htaccess。在给出如何配置Apache支持.htaccess文件之前,首先申明一下:使用.htaccess文件,会降低httpd服务器的一点性能。具体做法是找到Apache的httpd.conf配置文件,找到
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
修改为
<Directory />
Options FollowSymLinks
AllowOverride All
Order deny,allow
Deny from all
</Directory>
说明:后来经过实践证明上一步的修改不是必须的,视情况而定
找到<Directory "F:/www">,也就是你网站存放的路径,把AllowOverride None改为AllowOverride All,在后面加上Order allow,deny
Allow from all
如果存在就将#去掉。
然后在httpd.conf文件里面加上下面这段
<FilesMatch "^/.ht">
Order allow,deny
Deny from all
Satisfy All
</FilesMatch>
(也可以在文件中查找到这段代码,去掉每行前面的#,但是Satisfy All这一行可能没有,我的就没有哈)
这样就可以了。
/*
如果需要使用.htaccess以外的其他文件名,可以用AccessFileName指令来改变。
例如,需要使用.config ,则可以在服务器配置文件中按以下方法配置:
*/
AccessFileName .config
我目前只走到这一步了,下次有深入的配置再更新。
下面提供一个.htaccess文件的模版:
<FilesMatch "/.(bak|inc|lib|sh|tpl|lbi|dwt)$">
order deny,allow
deny from all
</FilesMatch>
RewriteEngine On
#RewriteBase /
# direct one-word access
RewriteRule ^index/.html$ index/.php [L]
RewriteRule ^login/.html$ login/.php [L]
RewriteRule ^suoding/.html$ minglei_suoding1/.php [L]
RewriteRule ^login_post/.html$ login_post/.php [L]
RewriteRule ^loginout/.html$ login/.php?act=logout [L]
RewriteRule ^register/.html$ register/.php [L]
RewriteRule ^phone_search/.html$ phone_search/.php [L]
RewriteRule ^zijin_list-([0-9]+)(.*)/.html$ zijin_list/.php/?page=$1 [QSA,L]
RewriteRule ^zijin_list/.html$ zijin_list/.php [L]
RewriteRule ^zijin-([0-9]+)(.*)/.html$ zijin/.php/?id=$1 [QSA,L]