« 你的blog值多少钱 | 首页 | 为php编译mcrypt函数 »
January 5, 2006
apache的rewrite模块实例操作
最近公司做一个网站,需要应用到url重定向到静态页面的技术,以前一直头疼学习rewrite模块的规则配置,看来今天不得不硬着头皮学习了。
我们的目标是把http://www.bulknews.cn/show.php?id=1014700通过rewrite的url重写,使可以直接http://www.bulknews.cn/1014700.html访问
1.首先配置apache的httpd.conf,目的是使.htaccess文件生效
<VirtualHost a.b.c.d>
ServerAdmin a@b.com
DocumentRoot /var/www/bulknews
ServerName www.bulknews.cn
<Directory />
Options FollowSymLinks
AllowOverride All
</Directory>
ErrorLog "|/usr/local/sbin/cronolog /var/log/www/wapya/www.bulknews.cn_error_log.%Y%m%d"
CustomLog "|/usr/local/sbin/cronolog /var/log/www/wapya/www.bulknews.cn_access_log.%Y%m%d" combined
</VirtualHost>
注意,这里必须是FollowSymLinks,AllowOverride是All,否则rewrite引擎根本不起作用,另外如果你的apache默认根目录是/var/www 的话,在/var/www的配置字段也要设置
Options FollowSymLinks
AllowOverride All
我的就因为这个,只是在虚拟主机设置,导致一直不能实现静态页面的转化。
2.在/var/www/bulknews下设置.htaccess文件
我们这边最简单的配置就是
RewriteEngine on
RewriteBase /
RewriteRule (.+)\.html$ show.php?id=$1 [L]
OK,重启web服务,这时候你就可以正常访问http://www.bulknews.cn/1014700.html
另外rewrite还有很多应用,大家可以多去google找一些资料,功能还是很神奇的。
参考文档:
Search Engine Friendly的URL设计
由 frank 发表于 January 5, 2006 2:50 PM
本网所有文章建立在 创作公用 协议下。版权声明:可以任意转载,转载时请务必以超链接形式标明文章原始出处和作者信息及以上“创作共用”声明。Trackback Pings
TrackBack URL for this entry:
http://blog.5ilinux.com/cgi-bin/mt-tb.cgi/55
其实不必用Options FollowSymLinks和AllowOverride All
直接在VirtualHost区块里面写入rewrite规则就可以了
由 shunz 发表于 January 7, 2006 8:27 PM
谢谢shunz的指点,但我好象这么做过,但没成功,我也觉得很奇怪
由 zhangweibo
发表于 January 9, 2006 11:26 AM
正想改版网站!!但不知道rewrite设置后会不会影响速度!!
由 consumer goods 发表于 May 9, 2006 1:21 AM
apache使用rewrite肯定要比不使用要消耗资源,只所以要重写,主要是为了搜索引擎服务,或者为了安全的考虑等
由 frank 发表于 May 9, 2006 7:56 AM