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]
猜你喜欢
- CloudStack 环境重新部署: &nbs
- 在忙活了一段时间后,网站建成了,接下来作为一个新站站长的你首先想到要做的可能就是让自己的网站早点被搜索引擎收录,早点让访问者通过搜索引擎找到
- IIS6.0应用程序池回收和工作进程 公司的一个网站程序长时间运行后,速度变慢,重新启动网站后速度明显变快,估计是网站程序占用的内存和CPU
- 昨日在微博,有站长发布了一张“QQ群”新功能测试图,引发了众多站长关注,图片显示QQ群可以展示论坛的信息,推广论坛内容。据了解,这是康盛公司
- 10月14日消息,据国外媒体报道,在过去的几周里谷歌尝试了一种新的广告形式,在侧边栏中的赞助商链接中直接加入产品的相关信息。例如,搜索&am
- Twitter联合创始人杰克·多尔西(Jack Dorsey)(腾讯科技配图) 北京时间9月29日消息,据国
- 在博客上与朋友分享心情和梦想已是很多现代人生活的重要部分。而现在,“迷你博客”服务使人们不用电脑也能发布博文。人们可以用手机随时随地记录生活
- 1. 清除物理网卡ip地址(192.168.1.22),使其工作在链路层接收所有数据包ip addr del 192.168.1.22/24
- 既然是我们的防范是从入侵者角度来进行考虑,那么我们就首先需要知道入侵者的入侵方式。目前较为流行web入侵方式都是通过寻找程序的漏洞先得到网站
- 现如今越来越多的人选择了开源的Linux操作系统,其不逊于Windows的性能和平易近人的价格是人们选择它的最好理由,而Red Hat Li
- 【搜狐IT消息】(文/雷风)6月25日,原微软中国总裁、盛大网络总裁唐骏在接受搜狐IT采访时对比尔·盖茨进行了评价,并回顾了与盖茨交往中难忘
- 国庆期间,华谊公司集结旗下众多一线明星拍摄的献礼影片《风声》,自首映以来票房一路高升,好评如潮。为了延续影片的精彩,我突发奇想,用&
- 23. 服务名称: helpsvc显示名称: Help and Support服务描述: 启用在此计算机上运行帮助和支持中心。如果停止服务,
- 一、今天下午由于课程的要求不得已做了Ubuntu搭建Ftp服务器的实验,但是实验指导书还是N年前的技术,网上搜了一大把,都是模模糊糊的!在百
- 北京时间11月25日消息,据国外媒体报道,微软周二表示,其CFO克里斯-里德尔(Chris Liddell)将于今年底离职,由现任微软企业部
- 在卓越亚马逊久蛰待发的2009年初,当当网总裁李国庆(李国庆新闻,李国庆说吧)宣布了网站正式盈利的消息。当当网市场营销副总裁陈腾华这样解释&
- 摘要:Windows2000Server安装成功后,一般会启动一个默认的Web站点,为整个网络提供Internet服务。在中小型局域网中,服
- 据国外媒体报道,Google Chrome开发团队目前正在开发Chrome 6。Chrome 6开发版的发布意味着Chrome 5正式版即将
- 一、域名过期后第一阶段域名过期后1~45天内,将处于注册商保留状态whois英文状态:REGISTRAR-HOLD二、域名过期后第二阶段 注
- 本文记录了Ubuntu 18.04下VMware Tools安装配置图文教程,供大家参考,具体内容如下1.打开虚拟机VMware Works