apache中url重写 例子

静态网页技术,也就是静态化所有的页面,一方面可以加快访问速度,又可以提高对搜索引擎的友好性.不过渐渐的发现很多网站地址里出现了很多"/",还有很多花样的文件和文件名出现,难道所有的网站都是这样做的吗?如:新浪,163等等.很多网站用了另一种欺骗手法和一种反向代理高速缓存技术.

所说的欺骗就是URL重写,在.net和java里面都有一些它们自己封装好的模块可以直接使用,很方便.不过,在PHP里面就没有这些封装好的东西,只有对它的环境里做改动,也就是在apache上做配置.

apache中有一个模块mod_rewrite,提供了重写的功能.里面有一些指令如:rewriterule,rewritecond,rewritebase,等等,指令是要分等级的,其中有一些是服务器级的,一些是目录级的.所谓服务器级的意思此指令作用于在此apache服务下所有的网站,指令写在httpd.conf里,目录级是只作用是于某目录下的,指令写在某目下的.htaccess文件里.详细的文档在http://free.xahxu.com.cn/Apache/mod/mod_rewrite.html里..

这里是我截了一小段例子:

RewriteEngine On
RewriteBase /
###############article_key_list.php#################

#<a href='article_key_list.php?cid=".$cid."'>
RewriteRule ^article_key_list_cid_(.*).htm$ article_key_list.php?cid=$1 [L]
#RewriteRule ^article_key_list/(.*)$ $1 [R,L]

#<a href='article_key_list.php?keyword=".$keyword."'>
RewriteRule ^article_key_list_keyword_(.*).htm$ article_key_list.php?keyword=$1 [L]
#RewriteRule ^article_key_list_keyword_(.*)$ $1 [R,L]


#<a href='content.php?id=".$id."' ^content_id_(.*).htm$ content.php?id=$1 [L]
#RewriteRule ^content/(.*)$ $1 [R,L]

第一句意思是把匹配^article_key_list_cid_(.*).htm$这个正则式的请求转到article_key_list.php?cid=$1

这个(.*)为参数传到$1.只把你页面的链接article_key_list.php?cid=2改为article_key_list_cid_2.htm就可以了.

上面的指令我是写在.htaccess里的,也就是目录级的指令,你把rewritebase/去了后也可以写在httpd.conf里,当然写后一种的速度要快些,它是在启动apache的时候就,一同载入内存了.前一种就在每次访问的时候,才将.htaccess载入,所以要慢一些.

经过我多次试验,发现在windows下不能使用目录级,就算用dos命令edit建立了名为.htaccess的文件.也起不了作用.但在linux下可以.

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值