htaccess学习

转载 2013年12月05日 17:01:08

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

?
1
2
3
4
5
6
7
8
RewriteEngine on
RewriteCond  %{HTTP_USER_AGENT}  ^Mozilla/5.0.*
RewriteRule  index.php            index.m.php
 
RewriteCond  %{HTTP_USER_AGENT}  ^Lynx.*
RewriteRule  index.php            index.L.php
 
RewriteRule  index.php            index.b.php

上 面语句的作用是当你是用FF浏览器访问index.php这个文件的时候,会自动让你访问到index.m.php这个文件,当你是用一些移动终端访问的 时候,会让你对index.php这个文件的访问实际访问的是index.L.php去,如果你是用其它的浏览器访问的时候,会让你跳到 index.b.php。在说形象一点,上面的语句就等同于程序里面的下面语句(依PHP语句为例):

?
1
2
3
4
5
6
7
8
9
10
if($_SERVER['HTTP_USER_AGENT'] == 'Mozilla/5.0')
{
//跳转到对index.m.php的访问
}
else if($_SERVER['HTTP_USER_AGENT'] == 'Lynx')
{
//跳转到对index.L.php的访问
}
else
//跳转到对index.b.php的访问

再看例2:

?
1
2
RewriteCond %{HTTP_REFERER} (www.test.cn)
RewriteRule (.*)$ test.php

上面语句的作用是如果你访问的上一个页面的主机地址是www.test.cn,则无论你当前访问的是哪个页面,都会跳转到对test.php的访问。

再看例三:

?
1
2
3
4
RewriteCond %{REMOTE_HOST} ^host1.* [OR]
RewriteCond %{REMOTE_HOST} ^host2.* [OR]
RewriteCond %{REMOTE_HOST} ^host3.*
RewriteRule (.*)$ test.php

上面语句的作用是如果你的地址是host1或host2或host3的时候,则就跳到对test.php。从这里可以看出,RewriteCond语句之间默认的是AND,如果想要OR,则要明确的写出来。

下面是自己收藏的一些有用的重写规则:

?
1
2
3
4
5
RewriteCond %{REQUEST_FILENAME} !-f   //如果文件存在,就直接访问文件,不进行下面的RewriteRule.(不是文件或文件不存在就执行重写)
 
RewriteCond %{REQUEST_FILENAME} !-d   //#如果目录存在就直接访问目录不进行RewriteRule
 
RewriteCond %{REQUEST_URI} !^.*(.css|.js|.gif|.png|.jpg|.jpeg)$ //#如果是这些后缀的文件,就直接访问文件,不进行Rewrite

———————————-小小地分割一下———————————————————

相关文章推荐

基于ZF中的.htaccess文件学习Apache的Rewrite语法

Apache Rewrite ZF

.htaccess文件

  • 2016年10月01日 11:43
  • 197B
  • 下载

htaccess thinkphp配置rewrite

  • 2014年10月31日 11:00
  • 181B
  • 下载

怎样利用.htaccess文件

http://www.sjyhome.com/htaccess/about-htaccess.html 在线htaccess 生成器:http://www.htaccesseditor.com/#...

6条.htaccess文件设置技巧

  • 2016年08月23日 19:14
  • 15KB
  • 下载

htaccess代码

  • 2013年04月22日 00:51
  • 3KB
  • 下载

apache的虚拟域名rewrite配置以及.htaccess的使用。

在web服务器领域,Apache基本上是一统天下的,虽然现在越来越多的人转向nginx的,但是仍然由于apache的高性能以及强大的功能,还是大多数服务器在使用Apache。 apache的安装就先不...

htaccess配置文

  • 2017年02月10日 11:44
  • 966B
  • 下载

21 .htaccess 技巧.pd

  • 2015年05月30日 15:45
  • 1.24MB
  • 下载

cPanel中,使用.htaccess设置主域名指向子目录

cPanel中,使用.htaccess设置主域名指向子目录 在开通的以cPanel控制面板为管理平台的主机账户下,往往开通空间时填写绑定的主域名默认是指向到/public_html/目录。但...
  • cxboyee
  • cxboyee
  • 2016年01月22日 13:24
  • 1652
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:htaccess学习
举报原因:
原因补充:

(最多只允许输入30个字)