RewriteCond
重写规则执行条件
语法: RewriteCond TestString CondPattern
生效域: server config, virtual host, directory, .htaccess
特别的上面的 TestString, 可提供反向引用. 引用模式为: %N 其中N为(0 <= N <=9),
引用当前若干RewriteCond条件中最后符合的条件中的分组成分, 也就是括号里的内容.不过用到的不多.
反向应用多在RewriteRule里常用.
RewriteCond 语法中的 TestStrng 为要被检查的内容, CondPattern 是进行匹配的规则, 它是一个兼容Perl风格的正则表达式和一些其他的特有字符属性. 这里介绍一下.
第一个: !
(感叹号) 表示否的意思. 比如一个条件: 判断访问此页面的上一页URL是否包含 sex 字符的话可以用这样: RewriteCond %{HTTP_REFERER} !(sex)
第二个: <
就是小于的意思, TestString < CondPattern.
第三个: >
就是大于于的意思, TestString < CondPattern.
第四个: =
相等的意思. <, >, = 三个和通常程序语言使用的 <, >, = 功能类似.
第五个: -d
是否是一个目录. 判断TestString是否不是一个目录可以这样: !-d
第六个: -f
是否是一个文件. 判断TestString是否不是一个文件可以这样: !-f
第七个: -s
是否是一个正常的有大小的文件. 判断TestString是否不是一个正常的有大小的文件可以这样: !-s
第八个: -l
是否是一个快捷方式文件. 判断TestString是否不是一个快捷方式文件可以这样: !-l
第九个: -x
是否是一个文件并且又执行权限. 判断TestString是否不是一个文件并且又执行权限可以这样: !-x
第十个: -F
检查TestString是否是一个合法的文件,而且通过服务器范围内的当前设置的访问控制进行访问。这个检查是通过一个内部subrequest完成的, 因此需要小心使用这个功能以降低服务器的性能。
第十一个: -U
检查TestString是否是一个合法的URL,而且通过服务器范围内的当前设置的访问控制进行访问。这个检查是通过一个内部subrequest完成的, 因此需要小心使用这个功能以降低服务器的性能.
另外: RewriteCond 指令后面可带 Flag, 现在只要2个可用, 一个是 NC|nocase, 不区分大小写的意思. 一个是 OR|ornext 表示连接下一个条件的意思.
RewriteCond 实际需要使用情况比如要判断一个条件成真的时候才执行相关的重写操作. 紧接着它下面的 RewriteRule 总是在RewriteCond 条件判断为真的时候才被执行.
看下面的一个例子:
#开启服务器重写模式
RewriteEngine on
#来自 www.test.cn 的连接访问本站时都只能访问 test.php 这页.
RewriteCond %{HTTP_REFERER} (www.test.cn)
RewriteRule (.*)$ test.php
#来自 www.test.com 的连接访问本站时都只能访问 newTest.php 这页.
RewriteCond %{HTTP_REFERER} (www.test.com)
RewriteRule (.*)$ newTest.php
更多参考:
分享到:
相关推荐
通过`RewriteRule`和`RewriteCond`指令,我们可以编写复杂的规则来处理URL。 六、PHP集成与配置 Apache与PHP的集成通常通过`mod_php`模块实现。在Apache配置中,可以调整PHP的设置,例如内存限制、错误报告级别等。...
【Apache应用详解及优化】 Apache HTTP Server是世界上最流行的Web服务器软件之一,它的高效性和灵活性使其成为许多网站的基础。本章将深入探讨Apache的优化策略,包括保持连接、网页传输压缩、页面缓存时间、隐藏...
RewriteCond %{HTTP_REFERER} !^https?://(www\.)?yourdomain\.com [NC] RewriteCond %{HTTP_REFERER} !^$ RewriteRule ^.*$ - [F,L] ``` 这将拒绝任何非`yourdomain.com`的引用者请求图片资源。 请注意,`....
通过RewriteEngine、RewriteRule和RewriteCond,可以实现URL的动态转换,这对于SEO和内部路由非常重要。 九、性能优化 1. KeepAlive:启用持久连接以减少TCP握手开销。 2. MaxKeepAliveRequests:限制每个连接处理...
RewriteCond %{HTTP_REFERER} !^https?://(www\.)?yourdomain\.com [NC] RewriteRule \.(jpg|jpeg|png|gif)$ - [F] ``` 这段代码会检查请求图片的来源(HTTP_REFERER),如果不是来自你的域名,服务器将返回...
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} -f [OR] RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} -d RewriteRule ^ - [L] RewriteRule ^ /index.html ``` 这样Apache将处理404错误并重定向到`index.html`。...
Apache 开启伪静态 Rewrite url重写规则详解 Apache 的 Rewrite 模块提供了强大的 URL 重写功能,通过在配置文件中添加规则,能够实现复杂的 URL 转换和跳转。本文将详细介绍 Apache 开启伪静态的配置和应用。 一...
在这个例子中,`RewriteEngine On`开启重写功能,`RewriteCond`用于设定条件,确保请求的不是真实存在的文件或目录。`RewriteRule`则定义了重写规则,`^products/(\d+)$`匹配以`/products/`开头,后面跟着一个或多个...
### htaccess URL重写规则详解 #### 一、概述 在Apache服务器环境下,`.htaccess` 文件被广泛用于实现URL重定向与重写等高级功能。URL重写(URL Rewriting)是一种技术手段,它允许将请求从一个URL转换到另一个URL...
本篇文章将详解在IIS服务器上,利用httpd.ini配置文件来实现图片防盗链的方法,这对于保护网站资源具有重要的实际意义。 首先,要实现IIS的图片防盗链,我们需要借助一种名为ISAPI_Rewrite的第三方模块。这是一种...
**Rewrite 规则详解** `RewriteRule` 是 mod_rewrite 模块的核心指令,它的格式是: ``` RewriteRule 模式 替换 [选项] ``` 1. **模式**:这是一个正则表达式,用来匹配请求的 URL。如果匹配成功,就会执行替换...
《PHP静态化页面与.htaccess写法详解》 在Web开发中,PHP静态化页面是一种常见的优化技术,它能够提高网站的加载速度和搜索引擎的友好性。实现这一功能,通常需要借助于Apache服务器的`.htaccess`文件进行配置。...
#### 三、RewriteRule详解 **RewriteRule**的基本语法为: ```apache RewriteRule pattern replacement [flags] ``` 其中: - **pattern**:正则表达式模式,用于匹配请求的URL。 - **replacement**:替换字符串...
这个例子展示了如何结合RewriteCond和RewriteRule来实现复杂逻辑的URL重写。 Apache伪静态Rewrite的应用非常广泛,可以用于实现URL美化、隐藏真实路径、多域名映射、错误页面定制等多种功能。熟练掌握Rewrite规则的...
**Rewrite模块详解** mod_rewrite是Apache HTTP Server中的一个URL重写模块,能够根据预定义的规则对请求的URL进行重新解析,从而实现URL美化、隐藏真实路径、动态URL转静态URL等功能。这个模块使用了一个叫做...
RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^(.*)$ index.php/$1 [QSA,PT,L] ``` 这些规则会将所有非文件非目录的请求转发到`index.php`。 了解和掌握ThinkPHP的URL...
RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ /index.php?$1 [L] ``` 如果Apache服务器不能正确解析.php文件,检查Apache的配置,确保PHP模块已经启用,并且已将....
RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^(.*)$ index.php [L,E=PATH_INFO:$1] ``` 控制器的基本写法在ThinkPHP5中,控制器是一个一个的类,继承自`think\...
最近想把一个网站改造成https访问,但是...RewriteCond %{SERVER_PORT} !^443$ RewriteRule (.*) https://%{SERVER_NAME}/$1 [R] 这种写法虽然能够实现将http全部跳转到https,但是在百度站长平台是通不过的。最后将
RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index.html [L] ``` 这段代码使得所有非实际文件或目录的请求都被重定向到`index.html`。 **2.4 Tomcat配置** 对于Tomcat,可以在`web.xml`中添加一个过滤器...