apache中url重写 例子
2010-04-09 15:40
141 查看
静态网页技术,也就是静态化所有的页面,一方面可以加快访问速度,又可以提高对搜索引擎的友好性.不过渐渐的发现很多网站地址里出现了很多"/",还有很多花样的文件和文件名出现,难道所有的网站都是这样做的吗?如:新浪,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下可以.
所说的欺骗就是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下可以.
相关文章推荐
- Windows 下 Apache URL重写例子 解决静态资源后携带 ;jsessionid 信息而无法被Apache解析的问题
- Java异步执行多个HTTP请求的例子(需要apache http类库)
- wdcp对default站点开启apache url重写功能
- apache开启.htaccess,URL重写,去除index.php
- apache的URL重写
- “基于 Apache Mahout 构建社会化推荐引擎”一文例子运行纪实
- Apache Ignite 2.3使用例子与问题总结
- 伪静态url重写机制apache的一个配置
- JAVA调用C#发布的webservice简单例子,java.lang.NoSuchMethodError: org.apache.ws.commons.schema.XmlSchemaComplexType.getAttributes()解决
- apache服务器301重定向的一个例子
- apache的项目nets项目--commons-net-1.2.2.jar功能齐全,例子代码如下:
- apache如何实现伪静态(URL重写)功能?
- Apache下url重写,虚拟机设置
- java 发送邮件 例子 (带附件的) 使用org.apache.commons.mail
- [Apache Maven Shade Plugin] [example] [001] 官方例子:includes-excludes
- Web服务器 Apache URL重写
- Apache官网搭建HTTP服务器的例子
- 关于Apache mod_rewrite的中文配置、使用和语法介绍(实现URL重写和防盗链功能)
- Apache HttpComponents 文件上传例子
- Apache 2.x 服务器中的URL重写的配置和应用