当前位置:  操作系统/服务器>linux

Apache伪静态Rewrite详解

    来源: 互联网  发布时间:2014-08-25

    本文导语:  一、Rewrite规则简介:Rewirte主要的功能就是实现URL的跳转,它的正则表达式是基于Perl语言。可基于服务器级的(httpd.conf)和目录级的 (.htaccess)两种方式。如果要想用到rewrite模块,必须先安装或加载rewrite模块。方法有两种一种是...

一、Rewrite规则简介:
Rewirte主要的功能就是实现URL的跳转,它的正则表达式是基于Perl语言。可基于服务器级的(httpd.conf)和目录级的 (.htaccess)两种方式。如果要想用到rewrite模块,必须先安装或加载rewrite模块。方法有两种一种是编译apache的时候就直接 安装rewrite模块,别一种是编译apache时以DSO模式安装apache,然后再利用源码和apxs来安装rewrite模块。
二、在Apache配置中启用Rewrite
打开配置文件httpd.conf:

代码如下:

1.启用rewrite
# LoadModule rewrite_module modules/mod_rewrite.so 去除前面的 #

2.启用.htaccess
在虚拟机配置项中
AllowOverride None    修改为: AllowOverride All


二、Rewrite基本写法
服务器有配置文件不可能由我们来改,所以大多情况下要在网站的根目录下建一个.htaccess文件。
代码如下:

RewriteEngine on    //启动rewrite引擎
RewriteRule ^/index([0-9]*).html$ /index.php?id=$1   //“([0-9]*)” 代表范围 用(.*)代表所有,下同。
RewriteRule ^/index([0-9]*)/$ /index.php?id=$1 [R]   //虚拟目录

三、Apache mod_rewrite规则重写的标志一览
1) R[=code](force redirect) 强制外部重定向
强制在替代字符串加上http://thishost[:thisport]/前缀重定向到外部的URL.如果code不指定,将用缺省的302 HTTP状态码。
2) F(force URL to be forbidden)禁用URL,返回403HTTP状态码。
3) G(force URL to be gone) 强制URL为GONE,返回410HTTP状态码。
4) P(force proxy) 强制使用代理转发。
5) L(last rule) 表明当前规则是最后一条规则,停止分析以后规则的重写。
6) N(next round) 重新从第一条规则开始运行重写过程。
7) C(chained with next rule) 与下一条规则关联
如果规则匹配则正常处理,该标志无效,如果不匹配,那么下面所有关联的规则都跳过。
8) T=MIME-type(force MIME type) 强制MIME类型
9) NS (used only if no internal sub-request) 只用于不是内部子请求
10) NC(no case) 不区分大小写
11) QSA(query string append) 追加请求字符串
12) NE(no URI escaping of output) 不在输出转义特殊字符
例如:RewriteRule /foo/(.*) /bar?arg=P1%3d$1 [R,NE] 将能正确的将/foo/zoo转换成/bar?arg=P1=zoo
13) PT(pass through to next handler) 传递给下一个处理
例如:
代码如下:
RewriteRule ^/abc(.*) /def$1 [PT] # 将会交给/def规则处理
Alias /def /ghi

14) S=num(skip next rule(s)) 跳过num条规则
15) E=VAR:VAL(set environment variable) 设置环境变量

四、Apache rewrite例子
例子一:
同时达到下面两个要求:
1.用http://www./xxx.php 来访问 http://www./xxx/
2.用http://yyy. 来访问 http://www./user.php?username=yyy 的功能

代码如下:

RewriteEngine On
RewriteCond %{HTTP_HOST} ^www.
RewriteCond %{REQUEST_URI} !^user.php$
RewriteCond %{REQUEST_URI} .php$
RewriteRule (.*).php$ http://www./$1/ [R]
RewriteCond %{HTTP_HOST} !^www.
RewriteRule ^(.+) %{HTTP_HOST} [C]
RewriteRule ^([^.]+). http://www./user.php?username=$1

例子二:

代码如下:

/type.php?typeid=* –> /type*.html
/type.php?typeid=*&page=* –> /type*page*.html

RewriteRule ^/type([0-9]+).html$ /type.php?typeid=$1 [PT]
RewriteRule ^/type([0-9]+)page([0-9]+).html$ /type.php?typeid=$1&page=$2 [PT]


    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 为什么apache编译后 ,没有rewrite模块?
  • 怎么配置apache的mod_proxy和mod_rewrite?
  • apache rewrite规则实现白名单
  • 开启Apache mod_rewrite模块示例代码
  • apache的rewrite规则使用说明
  • 13个实用的Apache Rewrite重写规则
  • Apache如何启用gzip压缩
  • 想用APACHE做WEBSERVER,但不会用APACHE,请教。
  • Apache Hadoop 项目主页及介绍
  • apache日志文件总是空的,重起apache也没用。
  • 修改配置真正解决php文件上传大小限制问题(apache+php)
  • 安装完apache测试主页发现用的是系统自带的apache,该怎么办?
  • Apache hadoop当前各个版本说明
  • SUN OS5.8怎么没有make ,我想装APACHE2.0不知道怎么下手,原来的APACHE1.3有不知道怎么卸载
  • Windows下php 5.3.5和apache2安装配置及测试
  • 假设现在需要从网上下载的压缩包apache2,如何以dso模式安装在/home 目录的apache目录中,写出完整命令
  • Apache HTTP服务器2.4中的新功能概览
  • Apache 2.0 好像不支持Tomcat,我没看到哪位用 Apache 2.0 连接上 Tomcat 的
  • Apache HTTP Server(httpd)下载安装以及如何配置java(tomcat)和php详细介绍
  • linux下重装apache,却无法安装apache模块?
  • Apache默认是不支持SSI如何给Apache增加SSI支持
  • 我装了一个redhat9.0, 我如何卸载掉它原来的apache,然后重新装一个apache?
  • 请问TOMCAT和APACHE怎样结合使用呢?就像PHP和APACHE结合使用一样?
  • 真痛苦:resin装好了,Apache装好了(开始用pws改成Apache还是不行),但就是不执行我的jsp,在Win98下面
  • 我连接apache和tomcat之后为什么apache不能启动?
  • 100分!tomcat4.0.4+Apache可以不用从新编译apache就可以集成tomcat吗?因为我看到:.....
  • 急!Ubuntu10.04 apache2和tomcat6 mod_jk 整合 实现apache2的代理问题


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3