Apache中RewriteCond规则参数介绍(转)
CodeIgniter2.0已经出来有20多天了呢~也就是我一直用的php框架(CI)。一直都在研究jquery,倒是把CI给忘到一边去了,呵呵~~今天公司事情不是很多,于是开始熟悉一下CI2.0的一些新特性~~刚好也再温习一遍CI的一些特性。早上看的东西不多,其中有这么一点知识,CI中默认情况下index.php 文件将被包含在你的URL中的,如果想要从url中删除这个默认的index.php,那么就需要用到Apache的强大的Rewrite功能了。
CI的官方文档中给出的解决办法是这样的:
创建.htaccess 文件放到网站的根目录下,文件中的内容如下:
1 |
RewriteCond $1 !^(index\.php|images|robots\.txt) |
2 |
RewriteRule ^(.*)$ /index.php/$1 [L] |
呵呵~~由于本人对Appache的这些规则也没怎么深入的研究过,于是在网上找了点关于这个appache的RewriteCond的一点资料,觉得写得不错很详细,现分享于大家:
———————————-小小地分割一下———————————————————
Apache中 RewriteCond语句对于我来说一直是个难点,多次试图去把它搞明白,都没有结构,这次我终于算大概知道它的意思了。
RewriteCond就像我们程序中的if语句一样,表示如果符合某个或某几个条件则执行RewriteCond下面紧邻的RewriteRule语句,这就是RewriteCond最原始、基础的功能,为了方便理解,下面来看看几个例子。
2 |
RewriteCond %{HTTP_USER_AGENT} ^Mozilla\/5\.0.* |
3 |
RewriteRule index.php index.m.php |
5 |
RewriteCond %{HTTP_USER_AGENT} ^Lynx.* |
6 |
RewriteRule index.php index.L.php |
8 |
RewriteRule index.php index.b.php |
上 面语句的作用是当你是用FF浏览器访问index.php这个文件的时候,会自动让你访问到index.m.php这个文件,当你是用一些移动终端访问的 时候,会让你对index.php这个文件的访问实际访问的是index.L.php去,如果你是用其它的浏览器访问的时候,会让你跳到 index.b.php。在说形象一点,上面的语句就等同于程序里面的下面语句(依PHP语句为例):
01 |
if ( $_SERVER [ 'HTTP_USER_AGENT' ] == 'Mozilla/5.0' )
|
05 |
else if ( $_SERVER [ 'HTTP_USER_AGENT' ] == 'Lynx' )
|
再看例2:
1 |
RewriteCond %{HTTP_REFERER} (www.test.cn) |
2 |
RewriteRule (.*)$ test.php |
上面语句的作用是如果你访问的上一个页面的主机地址是www.test.cn,则无论你当前访问的是哪个页面,都会跳转到对test.php的访问。
再看例三:
1 |
RewriteCond %{REMOTE_HOST} ^host1.* [OR] |
2 |
RewriteCond %{REMOTE_HOST} ^host2.* [OR] |
3 |
RewriteCond %{REMOTE_HOST} ^host3.* |
4 |
RewriteRule (.*)$ test.php |
上面语句的作用是如果你的地址是host1或host2或host3的时候,则就跳到对test.php。从这里可以看出,RewriteCond语句之间默认的是AND,如果想要OR,则要明确的写出来。
下面是自己收藏的一些有用的重写规则:
1 |
RewriteCond %{REQUEST_FILENAME} !-f //如果文件存在,就直接访问文件,不进行下面的RewriteRule.(不是文件或文件不存在就执行重写) |
3 |
RewriteCond %{REQUEST_FILENAME} !-d //#如果目录存在就直接访问目录不进行RewriteRule |
5 |
RewriteCond %{REQUEST_URI} !^.*(\.css|\.js|\.gif|\.png|\.jpg|\.jpeg)$ //#如果是这些后缀的文件,就直接访问文件,不进行Rewrite |
———————————-小小地分割一下———————————————————
本文摘自: http://hi.baidu.com/%D2%BB%CE%C4%CC%EC/blog/item/ace7f14e19851cc4d0c86af2.html
分享到:
相关推荐
Apache服务器的mod_rewrite模块提供了一个强大的URL处理机制,允许开发者通过重写URL模式来改善网站的SEO(搜索引擎优化...由于Apache的RewriteCond非常强大和灵活,所以在使用时也需要仔细地测试以确保规则正确无误。
### Apache 重写规则的常见应用 #### 一、引言 ...当然,在实际操作过程中还需要注意一些细节,比如确保Apache已经加载了`mod_rewrite`模块,以及正确设置`RewriteBase`等参数,这样才能确保重写规则正常工作。
Apache伪静态重写规则(RewriteRule)是网站优化中常用的一种技术,它允许我们将动态URL转换为静态或更友好的形式,以提高搜索引擎优化(SEO)和用户体验。然而,Apache的RewriteRule有一个限制,即每个规则最多只能...
在本文中,我们将深入探讨如何在ThinkPHP(简称TP)框架下配置伪静态规则,以适应IIS和Apache服务器环境,无论是Windows还是Linux操作系统。在实际的Web开发中,伪静态技术对于SEO优化和用户体验提升具有重要作用,...
这个规则意味着所有请求都会被重定向到`/hh/kk.php`,并且原始URL中的内容会作为查询参数传递给新URL。 2. **条件限制**:除了基本的重写规则外,还可以使用`RewriteCond`指令来设置额外的条件。例如,下面的例子...
正则表达式(Regular Expression)在Apache重写规则中的作用是定义URL的匹配模式。例如,如果我们想把所有以".php"结尾的URL重写为不显示.php扩展名的形式,我们可以使用以下规则: ```regex RewriteEngine On ...
在Apache配置文件`httpd.conf`或`.htaccess`中,你可以通过`RewriteEngine`指令启用Rewrite模块,并使用`RewriteRule`指令定义URL重写规则。例如: ```apacheconf RewriteEngine On RewriteRule ^old-page.html$ /...
通过RewriteRule和RewriteCond指令,可以制定复杂的URL转换规则。 五、安全与权限 Apache提供了多种安全特性,包括SSL/TLS加密、基本认证、Digest认证等。通过设置`<Directory>`、`<Files>`等指令,可以对特定目录...
这些规则通常在Apache的配置文件(httpd.conf)或特定目录的.htaccess文件中设置。下面我们将详细探讨Apache Rewrite规则的常见应用场景和工作原理。 首先,为什么需要使用重写规则?这是因为随着网站的发展和变化...
本手册详细介绍了Apache2.2的配置、管理和优化,是学习和深入理解Apache服务器操作的关键资源。 一、Apache2.2的基础架构 Apache2.2基于模块化设计,这意味着你可以根据需求选择安装和启用哪些功能模块。这些模块...
- RewriteRule和RewriteCond:这两个指令是URL重写的基石,通过正则表达式实现复杂规则。 8. **内容分发**: - Load Balancing:通过代理和负载均衡技术,可以将请求分散到多台服务器,提高可用性和响应速度。 -...
本文将详细介绍Apache的Rewrite规则及其各种标志。 首先,RewriteRule的基本格式如下: ```apacheconf RewriteRule pattern substitution [flags] ``` - `pattern`:这是一个正则表达式,用于匹配原始请求的URL。...
Apache的mod_rewrite模块是Web服务器中的一个强大工具,它允许我们通过定义规则来重写URL,从而实现诸如URL美化、隐藏真实路径、实现重定向等多种功能。以下是对Apache rewrite重写参数及其用法的详细说明: 1. **R...
### Apache虚拟主机配置详解 #### 一、Apache虚拟主机...以上配置详细地介绍了如何在Apache中设置虚拟主机以及相关的安全、性能优化措施。这些设置能够帮助开发者更好地管理多个网站,并提高网站的安全性和用户体验。
以下是对标题和描述中提到的13个实用的Apache Rewrite重写规则的详细解释: 1. **去除www前缀**:这个规则用于将URL中的 "www" 前缀去掉,统一域名格式。当HTTP_HOST不等于 `jb51.net` 时,规则将URL重定向至无 ...
此规则可以用来处理URL中的状态参数,并将其存储为环境变量供后端脚本使用。 - 用户特定子域名的重定向: ```apache RewriteEngine on RewriteCond %{HTTP_HOST} ^www\.[^.]+\.host\.com$ RewriteRule ^(.+)%...
需要注意的是,除了修改源代码外,还需在编译安装后调整`/usr/local/apache/conf/httpd.conf`文件中的`MaxClients`参数值为1024,确保能够支持更多的并发连接。 ##### 4. 编译Apache - 编译Apache时需要设置一些...
可以针对特定目录或全站进行重定向,例如,使用`Redirect permanent`指令可以为单个目录设置重定向,而通过`RewriteEngine`和`RewriteCond`规则可以实现全站的301重定向。 在执行301重定向设置后,验证其是否正确...
Rewrite模块允许我们在.htaccess文件中定义规则,对请求的URL进行重写,将原本动态的参数转换为静态化的URL路径。 以下是在帝国CMS 7.0中设置Apache伪静态Rewrite规则的具体步骤: 1. **开启RewriteEngine**:首先...