`
paulfzm
  • 浏览: 883106 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
文章分类
社区版块
存档分类
最新评论

Apache中RewriteCond规则参数介绍

 
阅读更多

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最原始、基础的功能,为了方便理解,下面来看看几个例子。

1 RewriteEngine on
2 RewriteCond  %{HTTP_USER_AGENT}  ^Mozilla\/5\.0.*
3 RewriteRule  index.php            index.m.php
4  
5 RewriteCond  %{HTTP_USER_AGENT}  ^Lynx.*
6 RewriteRule  index.php            index.L.php
7  
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')
02 {
03 //跳转到对index.m.php的访问
04 }
05 else if($_SERVER['HTTP_USER_AGENT'] == 'Lynx')
06 {
07 //跳转到对index.L.php的访问
08 }
09 else
10 //跳转到对index.b.php的访问

再看例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.(不是文件或文件不存在就执行重写)
2  
3 RewriteCond %{REQUEST_FILENAME} !-d   //#如果目录存在就直接访问目录不进行RewriteRule
4  
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中RewriteCond规则参数的详细介绍

    Apache服务器的mod_rewrite模块提供了一个强大的URL处理机制,允许开发者通过重写URL模式来改善网站的SEO(搜索引擎优化...由于Apache的RewriteCond非常强大和灵活,所以在使用时也需要仔细地测试以确保规则正确无误。

    Apache 重写规则的常见应用

    ### Apache 重写规则的常见应用 #### 一、引言 ...当然,在实际操作过程中还需要注意一些细节,比如确保Apache已经加载了`mod_rewrite`模块,以及正确设置`RewriteBase`等参数,这样才能确保重写规则正常工作。

    Apache伪静态时rewrite匹配参数超过10个的处理方法.docx

    Apache伪静态重写规则(RewriteRule)是网站优化中常用的一种技术,它允许我们将动态URL转换为静态或更友好的形式,以提高搜索引擎优化(SEO)和用户体验。然而,Apache的RewriteRule有一个限制,即每个规则最多只能...

    tp框架伪静态设置规则,iis和apache、windows、linux都有效。Public目录图片资源目录有效

    在本文中,我们将深入探讨如何在ThinkPHP(简称TP)框架下配置伪静态规则,以适应IIS和Apache服务器环境,无论是Windows还是Linux操作系统。在实际的Web开发中,伪静态技术对于SEO优化和用户体验提升具有重要作用,...

    Apache Rewrite Module 的重定向问题

    这个规则意味着所有请求都会被重定向到`/hh/kk.php`,并且原始URL中的内容会作为查询参数传递给新URL。 2. **条件限制**:除了基本的重写规则外,还可以使用`RewriteCond`指令来设置额外的条件。例如,下面的例子...

    Apache重写与正则表达式经验总结

    正则表达式(Regular Expression)在Apache重写规则中的作用是定义URL的匹配模式。例如,如果我们想把所有以".php"结尾的URL重写为不显示.php扩展名的形式,我们可以使用以下规则: ```regex RewriteEngine On ...

    Apache的ReWrite的应用

    在Apache配置文件`httpd.conf`或`.htaccess`中,你可以通过`RewriteEngine`指令启用Rewrite模块,并使用`RewriteRule`指令定义URL重写规则。例如: ```apacheconf RewriteEngine On RewriteRule ^old-page.html$ /...

    Apache中文手册

    通过RewriteRule和RewriteCond指令,可以制定复杂的URL转换规则。 五、安全与权限 Apache提供了多种安全特性,包括SSL/TLS加密、基本认证、Digest认证等。通过设置`<Directory>`、`<Files>`等指令,可以对特定目录...

    Apache rewrite重写规则的常见应用

    这些规则通常在Apache的配置文件(httpd.conf)或特定目录的.htaccess文件中设置。下面我们将详细探讨Apache Rewrite规则的常见应用场景和工作原理。 首先,为什么需要使用重写规则?这是因为随着网站的发展和变化...

    Apache2.2官方中文手册

    本手册详细介绍了Apache2.2的配置、管理和优化,是学习和深入理解Apache服务器操作的关键资源。 一、Apache2.2的基础架构 Apache2.2基于模块化设计,这意味着你可以根据需求选择安装和启用哪些功能模块。这些模块...

    apache2 中文手册

    - RewriteRule和RewriteCond:这两个指令是URL重写的基石,通过正则表达式实现复杂规则。 8. **内容分发**: - Load Balancing:通过代理和负载均衡技术,可以将请求分散到多台服务器,提高可用性和响应速度。 -...

    apache的rewrite规则使用说明

    本文将详细介绍Apache的Rewrite规则及其各种标志。 首先,RewriteRule的基本格式如下: ```apacheconf RewriteRule pattern substitution [flags] ``` - `pattern`:这是一个正则表达式,用于匹配原始请求的URL。...

    Apache rewrite的重写相关的参数说明

    Apache的mod_rewrite模块是Web服务器中的一个强大工具,它允许我们通过定义规则来重写URL,从而实现诸如URL美化、隐藏真实路径、实现重定向等多种功能。以下是对Apache rewrite重写参数及其用法的详细说明: 1. **R...

    apache虚拟主机配置

    ### Apache虚拟主机配置详解 #### 一、Apache虚拟主机...以上配置详细地介绍了如何在Apache中设置虚拟主机以及相关的安全、性能优化措施。这些设置能够帮助开发者更好地管理多个网站,并提高网站的安全性和用户体验。

    13个实用的Apache Rewrite重写规则

    以下是对标题和描述中提到的13个实用的Apache Rewrite重写规则的详细解释: 1. **去除www前缀**:这个规则用于将URL中的 "www" 前缀去掉,统一域名格式。当HTTP_HOST不等于 `jb51.net` 时,规则将URL重定向至无 ...

    Apache2.2 初级URL重写指南(RewriteRule)

    此规则可以用来处理URL中的状态参数,并将其存储为环境变量供后端脚本使用。 - 用户特定子域名的重定向: ```apache RewriteEngine on RewriteCond %{HTTP_HOST} ^www\.[^.]+\.host\.com$ RewriteRule ^(.+)%...

    apache反向代理

    需要注意的是,除了修改源代码外,还需在编译安装后调整`/usr/local/apache/conf/httpd.conf`文件中的`MaxClients`参数值为1024,确保能够支持更多的并发连接。 ##### 4. 编译Apache - 编译Apache时需要设置一些...

    完美解决IIS和APACHE的301重定向(带参数)

    可以针对特定目录或全站进行重定向,例如,使用`Redirect permanent`指令可以为单个目录设置重定向,而通过`RewriteEngine`和`RewriteCond`规则可以实现全站的301重定向。 在执行301重定向设置后,验证其是否正确...

    帝国7.0伪静态Apache的Rewrite设置方法

    Rewrite模块允许我们在.htaccess文件中定义规则,对请求的URL进行重写,将原本动态的参数转换为静态化的URL路径。 以下是在帝国CMS 7.0中设置Apache伪静态Rewrite规则的具体步骤: 1. **开启RewriteEngine**:首先...

Global site tag (gtag.js) - Google Analytics