Apache的RewriteRule规则详细介绍

R[=code](force redirect) 强制外部重定向 (rkyW z
强制在替代字符串加上http://thishost[:thisport]/前缀重定向到外部的URL.如果code不指定,将用缺省的302 HTTP状态码。 gN24M 3{C
F(force URL to be forbidden)禁用URL,返回403HTTP状态码。 m> 4ahue$
G(force URL to be gone) 强制URL为GONE,返回410HTTP状态码。 Np'2 }6P
P(force proxy) 强制使用代理转发。 ) Ps b>'X
L(last rule) 表明当前规则是最后一条规则,停止分析以后规则的重写。 ua 5 O Gx
N(next round) 重新从第一条规则开始运行重写过程。 S,<EEt XQ
C(chained with next rule) 与下一条规则关联 @+ 9 < O0
如果规则匹配则正常处理,该标志无效,如果不匹配,那么下面所有关联的规则都跳过。 Zs}5Smjl;%
T=MIME-type(force MIME type) 强制MIME类型 ~=KJ zOS,S
NS (used only if no internal sub-request) 只用于不是内部子请求 /[6j)HIS
NC(no case) 不区分大小写 ^2$ l J
QSA(query string append) 追加请求字符串 zH>hx5,k'X
NE(no URI escaping of output) 不在输出转义特殊字符 \~ B D m
例如:RewriteRule /foo/(.*) /bar?arg=P1\=$1 [R,NE] 将能正确的将/foo/zoo转换成/bar?arg=P1=zed +3a?` Z
PT(pass through to next handler) 传递给下一个处理 %0 #XPc("
例如: :5/Uh/ sX
RewriteRule ^/abc(.*) /def$1 [PT] # 将会交给/def规则处理 x A u/
Alias /def /ghi XyM G.r-,
S=num(skip next rule(s)) 跳过num条规则 A~Xq,BxCV
E=VAR:VAL(set environment variable) 设置环境变量

rewrite时服务器变量: `: O\dN>ON
HTTP headers:HTTP_USER_AGENT, HTTP_REFERER, HTTP_COOKIE, HTTP_HOST, HTTP_ACCEPT },5'z {3E
connection & request: REMOTE_ADDR, QUERY_STRING PY3 ps2^K.
server internals: DOCUMENT_ROOT, SERVER_PORT, SERVER_PROTOCOL r}u %#G+K,
system stuff: TIME_YEAR, TIME_MON, TIME_DAY

Rewrite规则表达式的说明: #Fu>|2 F|
. 匹配任何单字符 wFlv i =n/
[chars] 匹配字符串:chars [o c~iDx%W
[^chars] 不匹配字符串:chars Lc<eRVNd,
text1|text2 可选择的字符串:text1或text2 { OT:3SS7
? 匹配0到1个字符 A%Z)w z{
* 匹配0到多个字符 v4 *rPG v
+ 匹配1到多个字符 " o c $
^ 字符串开始标志 SKXBrD=-
$ 字符串结束标志 &LQ%
\n 转义符标志

反向引用 $N 用于 RewriteRule 中匹配的变量调用(0 <= N <= 9) =_=*O EgO]
反向引用 %N 用于 RewriteCond 中最后一个匹配的变量调用(1 <= N <= 9)

RewriteCond标志符 @J v# f r
'nocase|NC'(no case)忽略大小 ZCi Y,;c
'ornext|OR' (or next condition)逻辑或,可以同时匹配多个RewriteCond条件

RewriteRule适用的标志符 hLuJ WjCV
'redirect|R [=code]' (force redirect)强迫重写为基于http开头的外部转向(注意URL的变化) 如:[R=301,L] uC[d%v`
'forbidden|F' (force URL to be forbidden)重写为禁止访问 2F T-}w 0;
'proxy|P' (force proxy)重写为通过代理访问的http路径 F(0Z ] # +
'last|L' (last rule)最后的重写规则标志,如果匹配,不再执行以后的规则 ?%;B`2 nDR
'next|N' (next round)循环同一个规则,直到不能满足匹配 ,4yG(O $ )
'chain|C' (chained with next rule)如果匹配该规则,则继续下面的有Chain标志的规则。 p_gA/ . v=
'type|T=MIME-type' (force MIME type)指定MIME类型 1^tSn #j
'nosubreq|NS' (used only if no internal sub-request)如果是内部子请求则跳过 LhZZ c`|7t
'nocase|NC' (no case)忽略大小 b.@ H1 L
'qsappend|QSA' (query string append)附加查询字符串 *b: u * `@
'noescape|NE' (no URI escaping of output)禁止URL中的字符自动转义成%[0-9]+的形式。 ~ t"n%SgY
'passthrough|PT' (pass through to next handler)将重写结果运用于mod_alias IL2 e6 b
'skip|S=num' (skip next rule(s))跳过下面几个规则 loR,X W7 z
'env|E=VAR:VAL' (set environment variable)添加环境变量

实际操作

例子: "IOC[ #&G
RewriteEngine on !?S5IG LOj
RewriteCond %{HTTP_USER_AGENT} ^MSIE [NC,OR] _R N/7\
RewriteCond %{HTTP_USER_AGENT} ^Opera [NC] !&' # a
RewriteRule ^.* - [F,L] 这里”-”表示没有替换,浏览器为IE和Opera的访客将被禁止访问。

例子: *U( 1iv0 n
RewriteEngine On QWU5-p9e 8
RewriteBase /test Q3 K ;kS
RewriteCond %{REQUEST_FILENAME}.php -f rU/-Wq` B
RewriteRule ([^/]+)$ /test/$1.php ?7r mw y\
#for example: /test/admin => /test/admin.php I v 80,hW
RewriteRule ([^/]+)\.html$ /test/$1.php [L] aufcd57
#for example: /test/admin.html => /test/admin.php

限制目录只能显示图片 yKX: Z4I/
< IfModule mod_rewrite.c> + #i ,87
RewriteEngine on L @ ^ !(
RewriteCond %{REQUEST_FILENAME} !^.*\.(gif|jpg|jpeg|png|swf)$ mtHi9).,y|
RewriteRule .*$ - [F,L] [ 3bwbfHhi
< /IfModule>

2) 转换www.username.domain.com的对于username的主页请求为
www.domain.com/username

对于HTTP/1.1的请求包括一个Host: HTTP头,我们能用下面的规则集重写
http://www.username.domain.com/anypath 到 /home/username/anypath

Rewriteengine on
rewritecond %{HTTP_HOST} ^www\.[^.]+\.host\.com$
rewriterule ^(.+) %{HTTP_HOST}$1 [C]
rewriterule ^www\.([^.]+)\.host\.com(.*) /home/$1$2

注:
rewritecond 条件重写规则,当满足后面定义的条件后才会应用下面的重写规则,
rewritecond有各种变量

转载于:https://www.cnblogs.com/hechunhua/p/3370571.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/273982.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

算法:查找

查找算法&#xff08;比较&#xff09;基本思想顺序查找顺序查找也称为线形查找&#xff0c;属于无序查找算法。从数据结构线形表的一端开始&#xff0c;顺序扫描&#xff0c;依次将扫描到的结点关键字与给定值k相比较&#xff0c;若相等则表示查找成功&#xff1b;若扫描结束仍…

query上传插件uploadify参数详细分析

query上传插件uploadify参数详细分析 Uploadify Version 3.2 官网&#xff1a;http://www.uploadify.com/ 注&#xff1a;文件包里有两个js分别是&#xff1a;jquery.uploadify.js 和 jquery.uploadify.min.js&#xff0c;两者其实一样&#xff0c;只需载入其中一个js即可。很明…

python 基础 list和 tuple dict和set

list Python内置的一种数据类型是列表&#xff1a;list。list是一种有序的集合&#xff0c;可以随时添加和删除其中的元素。classmates [Michael, Bob, Tracy] 要删除list末尾的元素&#xff0c;用pop()方法&#xff1a; 要删除指定位置的元素&#xff0c;用pop(i)方法&#x…

IIS的安装

xp上好像只能装IIS5&#xff0c;IIS6根本就装不了转载于:https://www.cnblogs.com/hyk110988/p/3372592.html

py四种时间格式

time有四种类型&#xff08;time, datetime, string, timestamp&#xff09;1. time stringstring是最简单的表示time的方式如如下代码生成的即为string123>>> import time>>> time.ctime()Wed Nov 30 13:53:31 2016或者更简单的生成一个字符串1time_string …

type_traits应用

工作遇到这样的例子&#xff0c;对不同数据进行计算处理&#xff0c;得到一组结果集&#xff0c;包括计数、比例等。各个计算处理过程不同&#xff0c;结果集数据结构相同&#xff0c;但并非所有计算过程均有计数、比例的结果&#xff0c;有些可能只有计数&#xff0c;有些只有…

csv.writer写入文件有多余的空行

在用csv.writer写入文件的时候发现中间有多余的空行。 最早打开方式只是‘w’&#xff0c;会出现多余的空行&#xff0c;网上建议使用binary形式‘wb’打开可以解决问题&#xff1a; with open(egg2.csv, wb) as cf:12 不过只能在python2下运行&#xff0c;python3报错&#xf…

java笔记之连接数据库

1、一定不要忘了导入包 java工程&#xff1a;lib文件夹下mysql-connector-java.jar--->Build Path Web工程:当web下的servlet需要连接数据库时&#xff0c;除了上一步导入包还要在WEB-INF/lib导入mysql-connector-java.jar 2、关于乱码&#xff0c;查询 在终端查询数据时&am…

那些不能错过的XCode插件

XCode颜色显示插件ColorSense代码里的那些冷冰冰的颜色数值&#xff0c;到底时什么颜色&#xff1f;如果你经常遇到这个问题&#xff0c;每每不得不运行下模拟器去看看&#xff0c;那么这个插件绝对不容错过。更彪悍的是你甚至可以点击显示的颜色面板&#xff0c;直接通过系统的…

python爬虫第一课 开发环境配置

一、Python3的安装 二、请求库的安装 1、requests的安装 直接pip安装&#xff1a;pip3 install requests 2、Selenium的安装 selenium是一个自动测试化工具&#xff0c;利用它我们可以驱动浏览器执行特定的动作&#xff0c;如点击、下拉等操作。 直接pip安装&#xff1a;pip in…

用JSLint精炼提升JavaScript代码

由于移动应用的盛行和HTML5的广泛运用&#xff0c;JavaScript正越来越流行。JavaScript受欢迎的部分原因是因为它的灵活便捷&#xff0c;你可以快速上手&#xff0c;它不需要重量级的开发环境&#xff0c;也不需要第三方应用支持&#xff0c;只要你打开一个文本编辑器&#xff…

pymssql出现的错误

安装pymssql出现的错误&#xff1a;如下&#xff1a;---------------------------------------- Failed building wheel for pymssqlRunning setup.py clean for pymssql Failed to build pymssql Installing collected packages: pymssqlRunning setup.py install for pymssq…

javascript设计思维

//一.把参数当作私有变量使用 (function (a, b) {//把参数当作私有变量使用&#xff0c;省略了var&#xff0c;也节省了行数console.log(b) //undefined&#xff0c;所有未赋值的变量均为undefined })(window);//二.把参数作为参数使用 var obj_init function (b, d, f) {//1…

linux第一章简答

linux第一章简答题&#xff1a; 1、你在你的主机上面安装了一张网卡&#xff0c;但是开机之后&#xff0c;系统却无法使用&#xff0c;你确定网卡是好的&#xff0c;那么可能的问题出在哪里&#xff1f;该如何解决&#xff1f; 答&#xff1a;因为所有的硬件都没有问题&#xf…

(原创)一个和c#中LazyT类似的c++ LazyT类的实现

在.net 4.0中增加一个延迟加载类Lazy<T>&#xff0c;它的作用是实现按需延迟加载&#xff0c;也许很多人用过。一个典型的应用场景是这样的&#xff1a;当初始化某个对象时&#xff0c;该对象引用了一个大对象&#xff0c;需要创建&#xff0c;这个对象的创建时需要较长的…

网页选项卡的应用

&#xff08;1&#xff09;功能描述&#xff1a; 在页面中&#xff0c;设置三个不同名称的选项卡&#xff0c;当单机某个选项卡时&#xff0c;下面相对应的区域显示其内容信息&#xff0c;同时选项卡的背景色与内容信息的背景色浑然一体&#xff0c;并且字体加粗&#xff0c;表…

python 爬虫-beautifulsoup4

利用它可以不用编写正则表达式即可方便的实现网页信息的提取。 pip3 install beautifulsoup4 用法讲解&#xff1a;常用解析库&#xff1a; lxml HTML解析器 lxml XML解析器 from bs4 import BeautifulSoup soup BeautifulSoup(html,lxml) print(soup.prettify()) #格式化代…

魔兽控制命令ID

来源:http://tieba.baidu.com/p/1084211586本次技能ID大全共收录ID368条不包括重复的ID&#xff0c;物品类技能的ID使用必须将物品技能单独抽离出来并设置“物品技能false”&#xff0c;拥有命令字符串的物品请参考拥有相同字符串的4族中立技能。P.S所有ID都是按照从小到大的顺…

python爬虫框架--scrapy 基本使用

流程框架&#xff1a; 1、抓取第一页&#xff1a;请求第一页的URL并得到源代码&#xff0c;进行下一步分析。 2、获取内容和下一页链接&#xff1a;分析源代码&#xff0c;提取首页内容&#xff0c;获取下一页链接等待进一步爬取。 3、保存爬取结果&#xff1a;将爬取结果保存为…

jsp页面的使用

public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {//1.获取资源文件 InputStream isthis.getServletContext().getResourceAsStream("/WEB-INF/classes/db.properties"); Str…