url重写(urlrewrite)的一些系统变量

学php也有3年了,一直对url重写不是很了解,本学用到的话都是百度一下,再复制作简单修改,一些变量的参数都不太了解什么意思,难得今天有时间,做个笔记吧!

1)可用的一些系统变量,在重写条件和重写规则里都可以使用,格式为 %{name_of_variable}

 

HTTP headers:connection & request: 
HTTP_ACCEPT
HTTP_COOKIE
HTTP_FORWARDED
HTTP_HOST
HTTP_PROXY_CONNECTION
HTTP_REFERER
HTTP_USER_AGENT
AUTH_TYPE
CONN_REMOTE_ADDR
CONTEXT_PREFIX
CONTEXT_DOCUMENT_ROOT
IPV6
PATH_INFO
QUERY_STRING
REMOTE_ADDR
REMOTE_HOST
REMOTE_IDENT
REMOTE_PORT
REMOTE_USER
REQUEST_METHOD
SCRIPT_FILENAME
 
server internals:date and time:specials:
DOCUMENT_ROOT
SCRIPT_GROUP
SCRIPT_USER
SERVER_ADDR
SERVER_ADMIN
SERVER_NAME
SERVER_PORT
SERVER_PROTOCOL
SERVER_SOFTWARE
TIME_YEAR
TIME_MON
TIME_DAY
TIME_HOUR
TIME_MIN
TIME_SEC
TIME_WDAY
TIME
API_VERSION
CONN_REMOTE_ADDR
HTTPS
IS_SUBREQ
REMOTE_ADDR
REQUEST_FILENAME
REQUEST_SCHEME
REQUEST_URI
THE_REQUEST

 使用示例:

RewriteCond %{HTTP_REFERER} !abc.com         [NC]
RewriteCond %{REQUEST_URI}  !logo.png        [NC]
RewriteRule \.(jpg|png|gif|jpeg)$ http://www.abc.com/logo.png [R,NC,L]

PS:具体每个变量是什么意思就不说了,看变量名一般也知道是什么意思,实在不知道就自己再查吧

 

2)参数变量(只列出常用的几个,其他的请看 这里)

-d   是否一个目录

-f    是否一个文件

-U   是否一条有效的链接

这个比较常用来做伪静态时,判断访问链接是否一个真实目录或一个真实文件,不对它们进行重写(!是不等于的意思)

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php?s=/$1 [QSA,PT,L]

 

3)比较运算符(用于重写条件 RewriteCond)

字符串比较

 

=      等于

<      小于

>      大于

<=     小于等于

>=       大于等于

 

整数比较

-eq     等于(equal)

-ge     大于等于(greater or equal)

-gt     大于(greater than)

-le      小于等于(less or equal)

-lt      小于(less than)

-ne     不等于(not equal)

 

4)RewriteBase 重写的根目录

默认重写是从根目录 / 开始的,但如果你的web目录是在二维目录里的,例如 /myapp/ 里的,这时候你要使用 urlrewrite的话是这样的

RewriteRule "^/myapp/index\.html$"  "/myapp/index.php"

这样的话,是不是会很烦??这时候你就可以用RewriteBase了

RewriteBase "/myapp/"
RewriteRule "^index\.html$"  "index.php"

 

5)RewriteRule 后面的标识(flags)(同时只列出几个常用的,其他的请看 这里)

[QSA]      保留未重写之前的链接的查询参数

RewriteRule "/pages/(.+)" "/page.php?page=$1" [QSA]使用 [QSA] 标识, 一个类似 /pages/123?one=two 这样的请求,会被重写成 /page.php?page=123&one=two 这样,如果没有 [QSA] 标识, 一样的请求,将会被重写成 /page.php?page=123

 

[PT]       使用这个标识,会让系统遇到一些以pathinfo格式分隔的url,不当成一个目录路径来处理

例如:/home/article/detail/id/1.html默认地,url用/分隔的,是会被认为是目录来处理的(home目录下的article目录下的detail目录下的id目录下的1.html文件)使用[PT]标识,就是告诉系统,这就是条字符串,不是目录,不要去找目录

 

[L]      匹配的最后一条规则,意思就是如果匹配了这一条规则,就不用比较这一条规则后的规则是否匹配了,直接停掉就可以了

 

[NC]     匹配时忽略大小写

 

[R]       重定向,url防盗链或301跳转等等会用到

PS:重定向时,想发出什么请求头,就用R=状态码就可以了例如301重定向就是这样写的:[R=301,L]

 

6)正则怎么写?

1、正则部分是不需要处理域名也处理不到域名的,重写从根目录(/)开始

#错误的
RewriteRule htt:\/\/www\.abc\.com\/index\.html   http:\/\/www\.abc\.com\/index\.php  [NC,L]#这个也是错误的
RewriteRule (.*)\/index\.html   $1\/index\.php  [NC,L]#正确的
RewriteRule  index\.html   index\.php  [NC,L]

 

2、^和$

^和$是匹配开头和结束的,不限制开头和结束时,相当于模糊匹配

#这个是可以匹配到图片文件链接,做防盗链的
RewriteRule \.(jpg|png|gif|jpeg)$ http://www.abc.com/logo.png [R,NC,L]#但下面这样是不行的,图片链接还有域名路径和文件名呢,直接.jpg这样肯定是匹配不上的
RewriteRule ^\.(jpg|png|gif|jpeg)$ http://www.abc.com/logo.png [R,NC,L]#下面这样是这是可以的
RewriteRule ^(.+)\.(jpg|png|gif|jpeg)$ http://www.ot.com/logo.png [R,NC,L]

 

3、$1 $2 $3 ......??

$1 $2 这些点位符是替换首页正则式匹配上的内容的,一个括号()一个组

RewriteRule ^/article/(\d+)/(\d+)\.html$ index\.php/article/index/cat_id/$1/id/$2 [NC,L]

前面两个(\d+)组,后面用$1 $2代替,再加一个组,就用$3代替,以此类推~

 

暂时就这样吧,完。

转载于:https://www.cnblogs.com/tujia/p/6277934.html

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

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

相关文章

linux日志自动按天保存,linux实现按天生成日志文件并自动清理

linux实现按天生成日志文件并自动清理前篇文章中讲到如何在Linux crontab创建每秒执行的方法&#xff0c;高人可能早意识到日志文件没做处理&#xff0c;假如没人工处理久了日后越来越大肯定会出现问题&#xff0c;当然人工处理也不现实。为了解决这个问题&#xff0c;所以有了…

使用Java成功生成代码的7个技巧

作为介绍&#xff0c;最近我有点安静&#xff0c;部分原因是我一直在忙于Chronicle-FIX的工作 。 这是Chronicle-Enterprise套件中的一个新的超低延迟库&#xff0c;我们证明了该库可以在低个位数微秒内解析和存储消息。 当然&#xff0c;它利用了我们的开源产品Chronicle-Queu…

通达信版弘历软件指标_中线公式指标(副图 通达信 贴图)明确文字提示,辅助判断中线走势下载_通达信公式...

中线公式指标(副图 通达信 贴图)明确文字提示&#xff0c;辅助判断中线走势下载详细说明第一股票公式网()告诉您&#xff1a;当前正要下载&#xff1a;中线公式指标(副图 通达信 贴图)明确文字提示&#xff0c;辅助判断中线走势下载 中线公式指标(副图 通达信 贴图)明确文字提示…

新巴巴运动网 项目第十一天

新巴巴运动网 项目第十一天 今天内容 购物车 创建购物车对象 加入购物车分析开发流程 加入购物车代码开发 同款商品合并(非登陆时、已登陆时) 去购物车结算分析开发流程 去购物车结算代码开发 创建购物车对象 购物项 Sku 是否有货 数量 购物车 List<购物项> 结果集 小计…

linux查看apache配置文件路径,linux 命令行下查看apache配置文件httpd.conf位置

如何用linux命令查看apache配置文件httpd.conf位置&#xff0c;说明如下输入命令httpd -V输出结果[rootMyServer ~]# httpd -VServer version: Apache/2.2.15 (Unix)Server built: Dec 15 2015 15:47:31Servers Module Magic Number: 20051115:25Server loaded: APR 1.3.9, APR…

qt linux webservice,Qt实现访问WebService

之前也许是因为根本不用的原因吧,,,根本没有想过Qt访问WebService的方式....要解决这个问题,因为Qt现行版没有提供直接访问的类库...首先是一些必备知识,我连的服务器是用VS2010建的只有 string helloworld() 和string getHello(string str)两个接口的iis服务器.针对这个我一共…

eclipse 插件教程_编写Eclipse插件教程–第1部分

eclipse 插件教程Eclipse是三个最受欢迎的Java开发IDE之一。 其成功的原因之一是其可扩展性。 对于任何知道该怎么做并且已经做到的人来说&#xff0c;编写eclipse插件都可以非常轻松快捷。 不幸的是&#xff0c;第一次在Eclipse中进行操作会非常耗时且令人沮丧。 Eclipse框架非…

mac cad石材填充图案_CAD电视背景墙画法步骤

在做室内装修设计的时候&#xff0c;电视背景墙往往是我们需要考虑的重点。1、打开平面布置图。2、复制一份&#xff0c;主要复制电视墙区域。3、矩形选框框选电视墙区域。4、删除选框意外的线条。5、旋转90度&#xff0c;让我们正对电视墙。6、在下方画基准线&#xff0c;作为…

HDU-3065 病毒侵袭持续中 AC自动机又是一板子!

病毒侵袭持续中 上一题是求出现多少病毒输出病毒序号&#xff0c;而这题输出每个病毒出现的次数。这题有字典树基础都能做出来&#xff0c;把叶子节点用相应的编号标记起来&#xff0c;匹配的时候遍历到叶子节点用一个数组把次数存起来就行了。 有了前几题的教训直接用静态树做…

街机linux有安卓好吗,Ubuntu下用xmame玩街机游戏

Ubuntu下用xmame玩街机游戏xmame是Windows下mame的Linux版&#xff0c;gxmame是xmame的图形化前端。mame号称是模拟效果最好、支持roms最多的模拟器&#xff0c;不过这个我就不清楚了。安装很简单sudoapt-getinstallgxmame会自动安装xmame和gxmame&#xff0c;安装后在Gnome游戏…

运行时间_运行一段时间报高压保护

请点击蓝字“阿理支持连”关注哦一起来探索空调的技术Discovery ●运行一段时间报高压保护某地区用户报修一台柜机运行一段时间(20分钟)后报E1高压保护&#xff0c;到底怎么回事呢&#xff1f;让我们一起来探讨一下吧&#xff01;一、案例描述这是一套定频柜机&#xff0c;E1高…

使用Lambda的装饰设计模式

随着Java中lambda的出现&#xff0c;我们现在有了一个新工具&#xff0c;可以更好地设计我们的代码。 当然&#xff0c;第一步是使用流&#xff0c;方法引用和Java 8中引入的其他简洁功能。 展望未来&#xff0c;我认为下一步是重新访问完善的设计模式&#xff0c;并通过功能性…

linux nohup /dev/null,nohup结合/dev/null

Linux重定向linux中经常需要后台执行程序&#xff0c;并将程序输出结果记录到本地文件&#xff0c;因此可选择>>或者>操作。追加模式>> 示例&#xff1a;echo ‘abc’ >>test.txt覆盖模式> 示例&#xff1a;echo abc>test.txt0标准输入、1标准输…

CodeForces 757B Bash's Big Day(线性筛)

题意&#xff1a;给你一个集合&#xff0c;让你找到一个最大的子集&#xff0c;使得子集里面的元素的gcd&#xff01;1&#xff0c;输出子集的元素的个数。 思路&#xff1a;先将集合里面的元素哈希&#xff0c;再线性筛。 PS&#xff1a;明明以前做过类似的题的&#xff0c;结…

macbook pro python开发_Mac打造python2 python3开发环境

最新版的MacOS Sierra默认带的python环境仍然为2.7.10&#xff0c;本文将介绍使用Brew安装python3.5并做简单的配置&#xff0c;打造python2&#xff0c;python3共存的开发环境直接尝试brew安装&#xff0c;提示需要执行brew link gdbmthatsitdeMacBook-Pro:~ thatsit$ brew in…

存进销系统 c语言大作业,c语言,程序设计大题,*纳税以系统(2)求法,求解...

话题&#xff1a;要求将2元兑换成有伍角贰角和壹角(每种都有),问有...问&#xff1a;要求将2元兑换成有伍角贰角和壹角(每种都有),问有几种兑换法?(c语言程...推荐回答&#xff1a;#include int main(void) { int i_5,i_2,i_1; for(i_50;i_5话题&#xff1a;题目:销售管理系统…

将2个字符写入单个Java char

这是创建超低延迟的Chronicle FIX-Engine时使用的另一个好技巧。 在从字节流中读取数据时&#xff0c;如果可能的话&#xff0c;将数据存储在char而不是将其读取到String效率更高。 &#xff08;至少您要避免创建String对象&#xff0c;尽管可以通过使用缓存或使用CharSequenc…

时间管理的6句话

早起 避免开会 避免多任务&#xff0c;保持单进程集中注意力、高效工作&#xff0c;每天最多4小时 你没空时不会做的事情&#xff0c;有空了也不会做 划分任务的优先级&#xff0c;不要把急切当作重要 转载于:https://www.cnblogs.com/easonw/p/6286977.html

h5页面保存img_一文彻底解决HTML5页面中长按保存图片功能

本文详细介绍了如何在H5中实现长按保存图片的功能。长按保存图片是现在一些宣传页H5中很常见的需求&#xff0c;但是js没有这样的能力&#xff0c;所以要么借助android或ios的原生能力,要么用canvas自己画一个(截屏)&#xff0c;相比较原生成本太高&#xff0c;且必须依赖于app…

c语言float m1 m2什么意思,m1和m2的区别,一文带你秒懂这两者的关联

摩路由M1作为Moto旗下首款路由器&#xff0c;自去年发布以来&#xff0c;备受瞩目。几个月下来&#xff0c;借着强大的信号覆盖和穿墙能力&#xff0c;赢得了不少用户的认可&#xff0c;甚至推崇。不久前发布的摩路由M2&#xff0c;在M1的基础上进行了升级&#xff0c;功能和配…