.htaccess文件详解

概述:其实.htaccess文件相当于是从http.conf文件继承的文件,只是作用的范围不一样,http.conf的配置作用于服务器上的所有网站,.htaccess只作用于其定义的文件夹下。.htaccess文件主要用于一个服务器下有多个站点,每个站点的配置又不一样的情况下。

理论上说,使用.htaccess文件会影响服务器的性能,并且基本上在.htaccess文件中设置的功能都可以在http.conf文件中设置。所以如果一个服务器上只有一个站点的话,基本上可以不使用.htaccess文件。但是在实际开发中基本上还是都使用的.htaccess文件。下面详细分析一下.htaccess文件的语法。


#开启rewrite

RewriteEngine On


#定义该.htaccess文件的作用范围

RewriteBase /


#禁止显示文件列表
Options -Indexes


#自定义错误页面
ErrorDocument 404 /errors/notfound.html
ErrorDocument 401 "你没有权限访问该页面,请放弃!"


#禁止一个IP访问本目录
deny from 192.168.1.1


#禁止某个IP段
deny from 192.168.1.


#禁止所有
deny from all


#该目录下的缺省文件名 可以列出多个,顺序表明他们的优先级别
DirectoryIndex filename.html index.cgi index.pl default.htm


#重定向
Redirect /olddirectory http://www.w3sky.com/newdirectory


#防盗链
RewriteCond %{ HTTP_REFERER } !^$ 
RewriteCond %{ HTTP_REFERER } !^http://(www.)?w3sky.com/.*$ [NC]   #这里的NC是标示符,标示忽略大小写
RewriteRule .(gif &line;jpg)$ http://www.w3sky.com/替代图片文件名 [R,L]  #R标示强制重定向,L标示最后一条规则,也就是说如果执行了这条规则就不再执行其后面的规则,类似于程序语言中的break;


#去除www
RewriteCond %{HTTP_HOST} ^www.yourdomain.tld$ [NC] 
RewriteRule ^(.*)$ http://yourdomain.tld/$1 [R=301,L]   #R强制重定向,并且HTTP的相应码为302


RewriteCond %{REQUEST_FILENAME} !-f   #  !-f如果不是文件  
RewriteCond %{REQUEST_FILENAME} !-d  # !-d  如果不是目录


# Rewrite all other URLs to index.php/URL
RewriteRule .* index.php/$0 [PT]   # PT移交给下一个处理器(还没弄懂这个是什么意思)


这里需要说明一下 RewriteCond的意义,这个语句类似于我们写程序时的if语句,而紧跟其后的RewriteRule语句相当于if语句里面的执行体,也就是当RewriteCond后面的条件成立时才执行其后面的RewriteRule规则,一个RewriteRule规则前面可以有多个RewriteCond,默认他们之间与(AND)的关系,也就是只有所有的RewriteCond都成立时,如果要使用或(OR)的关系,需要显示说明

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值