.htaccess语法中RewriteCond和RewriteRule意义

如果 xxx 匹配ooo 并且

如果 xxx2 匹配ooo 并且

那么 xxx3的访问 应该变为 xxx4

举个例子:

RewriteCond %{REQUEST_URI} ^.*$
RewriteCond %{REQUEST_URI} ^/(?!pic).*$
RewriteRule ^(.*)$ /frontend/web/$1

代码解释:

如果 字符串 %{REQUEST_URI} 是 除 "\n"以外的字符开头,并且出现零次或多次,并且除 "\n"以外的字符结尾

如果 字符串 %{REQUEST_URI} 是以 / 开头 并且斜杠之后不是 pic字符 并且以除 "\n"以外的字符结尾

那么 当前请求的url 符合规则 ^(.*)$ 就让请求地址变为 /frontend/web/$1

假设:

现在的请求是 www.example.com/index.html

第一条 RewriteCond 是符合的 并且

第二条 RewriteCond 是符合的

根据 RewriteRule 请求应该变为 www.example.com/frontend/web/index.html

在这里 %{REQUEST_URI} 就是 /index.html

php的$_SERVER中就有这个key。

再次假设:

现在的请求是 www.example.com/pic/avatar/x.jpg

第一条 RewriteCond 是符合的

第二条 RewriteCond 是不符合的

RewriteRule 不执行 请求依然是 www.example.com/pic/avatar/x.jpg

时间: 2024-08-05 10:47:50

.htaccess语法中RewriteCond和RewriteRule意义的相关文章

转: 全面理解.htaccess语法中RewriteCond和RewriteRule意义

关于.htaccess伪静态的使用,章郎虫一直没有好好想过.以前一直是在网上找现成的,然后修改下网址实现重定向.今天我专门找资料看了下RewriteCond和RewriteRule的意思及使用方法.然后回过头看<网站地址更改之htaccess和php的301重定向>这篇文章,终于有些理解.现在不用一直找现成的代码,也可以自己写一些规则实现重定向了.下面就简单的介绍下他们的用法. RewriteCond的语法 RewriteCond TestString CondPattern [Flags]其

.htaccess文件中RewriteCond详解

Apache中 RewriteCond语句对于我来说一直是个难点,多次试图去把它搞明白,都没有结构,这次我终于算大概知道它的意思了 RewriteCond就像我们程序中的if语句一样,表示如果符合某个或某几个条件则执行RewriteCond下面紧邻的RewriteRule语句,这就是RewriteCond最原始.基础的功能,为了方便理解,下面来看看几个例子. 复制代码代码如下: RewriteEngine onRewriteCond  %{HTTP_USER_AGENT}  ^Mozilla//

在.htaccess文件中写RewriteRule无效的问题的解决

近来在Apache Rewrite 拟静态配置时,遇到个问题.写的如下: RewriteEngine onRewriteRule ^/t_(.*)/$ /test.php?id=$1 保存在httpd.conf文件中时,发现可以起作用. 而写在.htaccess文件中,死活不起作用.经过研究发现,里面随便填写字符,服务器报500错误,而且进行定向也没问题,所以不是访问不到的问题,初步猜测应该是语法的问题.后来在百度“RewriteRule  .htaccess”时 找到一篇文章,  文章标题:<

.htaccess 语法以及应用

[转] http://blog.sina.com.cn/s/blog_6e8b46e701014drc.html http://blog.sina.com.cn/s/blog_6e8b46e701014dtu.html .htaccess是Apache服务器的一个非常强大的分布式配置文件. 正确的理解和使用.htaccess文件,可以帮助我们优化自己的服务器或者虚拟主机. 如何启用htaccess 以windows为例,进入apache/conf目录,找到httpd.conf文件,去掉 Load

转--htaccess语法教程 apache服务器伪静态规则教程

转自:http://blog.csdn.net/qingli518/article/details/9118361 htaccess语法教程apache服务器伪静态规则教程 注:如果你是为了找Discuz!论坛的为静态规则的话,其实不用看这里,Discuz!的后台有个链接点进去直接Copy就是了.PHPwind的我就不知道了,没用过,后台应该也有吧. 这几天一直在研究Apache的重写规则,虽然网上有很多教程,不过发现大部分都是抄袭一个人的,一点都不全,所以我想写一个简单的易于理解的教程,我学习

Apache中 RewriteCond 规则参数介绍 转

摘要: RewriteCond指令定义了规则生效的条件,即在一个RewriteRule指令之前可以有一个或多个RewriteCond指令.条件之后的重写规则仅在当前URI与Pattern匹配并且满足此处的条件时才会起作用. Apache模块 mod_rewrite 提供了一个基于正则表达式分析器的重写引擎来实时重写URL请求.它支持每个完整规则可以拥有不限数量的子规则以及附加条件规则的灵活而且强大的URL操 作机制.此URL操作可以依赖于各种测试,比如服务器变量.环境变量.HTTP头.时间标记,

RewriteCond与RewriteRule用法

Rewrite重写任务基本上都是由RewriteCond和RewriteRule两个命令配合完成. 首先看一段简单代码: [Shell] 纯文本查看 复制代码 1 2 3 RewriteBase / RewriteCond %{http_host} ^softwhy.com$ [NC] RewriteRule ^(.*)$ http://www.softwhy.com/$1 [R=301] 下面对上述代码做一下分析: (1).RewriteBase /规定根目录为基准路径,具体参阅.htacce

1.3 .htaccess语法

.htaccess是Apache服务器的一个非常强大的分布式配置文件. 1. 常见格式 #开启URL重写RewriteEngine On#URL重写作用域RewriteBase /path/to/url#重写条件RewriteCond#重写规则RewriteRule 例子CodeIgniter移除URL中的index.php RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !

&nbsp; RewriteCond 和 RewriteRule的区别

RewriteCond有点类似于C语言的if.也就是条件判断. RewriteCond 的语法: RewriteCond  测试的字符串   CondPattern[flags] RewriteCond指令定义一条规则条件.在一条RewriteRule指令前面可能会有一条或多条RewriteCond指令,只有当自身的匹配模式(pattern)匹配成功且这些条件也满足时规则才被应用于当前的URL处理. 测试字符串 测试字符串,除了包含普通的字符外,还可以包括下列的可扩展结构: 1,$N Rewri