Apache伪静态Rewrite详解
发布时间:2021-06-26 21:26:08
一、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.用https://www.jb51.net/xxx.php 来访问 https://www.jb51.net/xxx/
2.用http://yyy.jb51.net 来访问 https://www.jb51.net/user.php?username=yyy 的功能
RewriteEngine On
RewriteCond %{HTTP_HOST} ^www.jb51.net
RewriteCond %{REQUEST_URI} !^user.php$
RewriteCond %{REQUEST_URI} .php$
RewriteRule (.*).php$ https://www.jb51.net/$1/ [R]
RewriteCond %{HTTP_HOST} !^www.jb51.net
RewriteRule ^(.+) %{HTTP_HOST} [C]
RewriteRule ^([^.]+).jb51.net https://www.jb51.net/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]


猜你喜欢
- “把竞争者都吃掉”,没错,这就是采用鳄鱼为标志的美国主机Hostgator的口号,成立于2002年的美国主机商Hostgator已经成为全球
- 常用组件主要包括Aspjpeg、Jmail、LyfUpload、动易、ISAPI_ReWrite等,本文就仅说这5种,其他类型组件可以根据需
- 在做网站优化的时候我们首先要做的是对竟争对手加以分析从而可以更好的实施方案,清楚了对手的情况我们还需要清楚网络优化应该避免的一些问题,一般来
- 一、环境在虚拟机上运行的ubuntu16.04 , 使用命令uname -r查看当前系统内核版本当前版本为4.15.0-45-generic
- 概述Microsoft 的运营技术组(OTG)最近部署了 Microsoft Exchange Server 2003 - 该公司行业领先的
- 1.去官网下载对应版本的安装包,64位系统对应64位的安装包2.新建一个目录,如:/usr/lib/jdk3.把安装包移动到新建的jdk目录
- 可扩展性和性能:端终服务 用户可以在服务器上运行 Windows 程序,使用一台远程 PC 机、Windows 终端或非 Wind
- 垂直搜索是针对某一个行业的专业搜索引擎,是搜索引擎的细分和延伸,是对网页库中的某类专门的信息进行一次整合,定向分字段抽取出需要的数据进行处理
- 昨天在CnBeta上有人投递了一篇文章称其在浏览全球仅有的几个PR=10的网站时,其中有一个垃圾站点的PR=10(025yc.com),结果
- 前言smb是一个协议名,它能被用于Web连接和客户端与服务器之间的信息沟通。SMB最初是IBM的贝瑞·费根鲍姆(Barry Feigenba
- 做网赚就要有一定的心态,如果心态不对,往往会走很多的弯路,甚至最后无奈的放弃。芝麻认为,不仅仅的做网赚,做任何事情都要先确定好心态再继续,否
- 做为站长学习如何防止SQL注入是非常必须的,因为一旦网站被注入小到挂马,大到破坏系统程序,可以说对网站的破坏是非常大的,对于asp编写的程序
- 1、把系统安装光盘插入,重启机器,启动时迅速按下Del键,进入CMOS,把启动顺序改为光盘先启动,这样就启动了Linux安装程序,按F5,按
- (一)硬件准备一台HP ProLiant DL160 G5服务器(硬盘拓展到480G)一台个人电脑(windows操作系统)一个Lenovo
- 现在有许多新站长抱怨百度对新站的收录速度问题,虽然我也是新的站长,我的网站暂时还没有被百度收录,但我还是要发表一下我对百度收录的几点看法:1
- 不知不觉写程序已经做了2年,有成功的喜悦,也有失败的痛苦,但总不敢称自己是高手,因为和我心目中真正的高手们比起来,还差的太远。世界上并没有成
- 添加硬盘到虚拟机 并实现自动挂载 (https://www.jb51.net/article/135432.htm)完成挂载硬盘后,开始以下
- LAMP框架是当前软件开发的一种重要模式,LAMP中的L代表开源的操作系统Linux,A代表最著名的WWW服务器,也是开源软件的Apache
- 下面的每一条戒律都将有效地影响代码的性能和可伸缩性。换句话说,尽可能不要照着戒律去做!下面,我将解释如何破坏他们以便提高性能和可伸缩性。1、
- 概要本文介绍了如何配置“域名系统”(DNS) 服务器,使其承载可从外部访问(即从Internet 访