.htaccess是什么文件?可以实现哪些功能?.htaccess正则表达式

        .htaccess文件是Apache服务器中最常用的一个配置文件,它负责相关目录下的网页配置。通过.htaccess文件,可以帮我们实现:网页301重定向自定义404错误页面改变文件扩展名允许/阻止特定的用户或者目录的访问禁止目录列表配置索引入口等功能。

       .htaccess是一个完整的文件名,不是***.htaccess或其它格式(当然也有管理员把其设置成其它名字,但一般都是使用.htaccess)。另外,上传.htaccess文件时,必须使用ASCⅡ模式,并使用chmod命令改变权限为:644(RW_R__R__)。每一个放置.htaccess的目录和其子目录都会被.htaccess影响。

       另外,.htaccess手动编辑方法是使用UE或notepad2等高级文本编辑器。如果不方便下载或手动编写的文件出错,也非常推荐在线htaccess文本编辑器,目前这款编辑器已经非常完善,并且在二次开发下已经增加了很多新功能,简单易用,完美支持多条件复杂任务的htaccess文件智能生成任务。

       推荐一个htaccess在线编辑网站:http://www.htaccesseditor.com/ 对于不会写代码的很实用。网站支持多国语言,包括中文。可以实现功能:是否显示文章列表,是否启用密码保护,各种错误页面设置,预设置页面,WWW转向设置,存取限制等等。

       下面小东北通过开启网站防盗链功能,来详细分享一下.htaccess的使用方法:)

       如果网站的流量有限,那么图片防盗链是非常必要的。不仅可以减少流量浪费,而且可以减轻服务器负担。开启图片防盗链功能需要在htaccess文件中加入以下代码:

RewriteEngine on

RewriteCond %{HTTP_REFERER} !^http://aaoo.net/ .*$ [NC]

RewriteCond %{HTTP_REFERER} !^http://aaoo.net $ [NC]

RewriteCond %{HTTP_REFERER} !^http://www.aaoo.net/ .*$ [NC]

RewriteCond %{HTTP_REFERER} !^http://www.aaoo.net $ [NC]

RewriteRule.*.(jpg|jpeg|gif|png|bmp|rar|zip|exe )$http://www.semshare.net/nopic.jpg [R,NC,L]

其中有色的地方都是要改为你的:

       红色 :就是改为你提供下载页面的地址,也就是只有通过这个地址才可以下载你所提供的东东。

       蓝色 :就是要保护文件的扩展名(以|分开),也就是说以这些为扩展名的文件只有通过红色的地址才可以访问。

       绿色 :如果不是通过红色的地址访问蓝色这些为扩展名的文件时就回重定向到绿色地址上。

       这个方法有个好处是,不同的虚拟主机用不同的描述定义。

       接下就是怎么用 .htaccess 文件来实现防盗链了。首先要在空间上建两个目录(当然目录名随你),一个为 web 另一个为 down ,web 是用来放下载页面的(或下载程序),down 当然就是放你提供的东东的啦,把 .htaccess 文件的红色部分改一下,改为http://你的域名/web。蓝色部分改为你要保护文件的扩展名。绿色部分改为http://你的域名/web。改后保存.htaccess 文件把它上传到 down 目录。

解释一下上述语句:

1、RewriteCond %{HTTP_REFERER} !^$ [NC]

       允许空“HTTP_REFERER”的访问,即允许用户在浏览器地址栏中直接输入图片地址时图片文件的显示。一般而言,这是可选的,不过,建议这么设置,如果强迫必须具有“HTTP_REFERER”才能访问,可能会带来某些问题,比如说在用户通过代理服务器访问时。

2、RewriteCond %{HTTP_REFERER} !website.com [NC]

       设置允许访问的HTTP来源,包括我们的站点自身、Google、Baidu、Bloglines、Feedburner等。

3、RewriteRule .*\.(gif|jpg|png)$ http://www.aaa.com/no.png [R,NC,L]

       定义被盗链时替代的图片,让所有盗链 jpg、gif、png 等文件的网页,显示根目录下的 no.png 文件。注意:替换显示的图片不要放在设置防盗链的目录中,并且该图片文件体积越小越好。当然你也可以不设置替换图片,而是使用下面的语句即可:RewriteRule .*\.(gif|jpg|png)$ – [F]

4、说明一下其中的R、NC 和 L

       R 就是转向的意思

       NC 指的是不区分大小写

       L 的作用是指明本次转向到此结束,后续的转向不受先前判断语句的影响

5、防止盗链的文件类型

       上例中是 gif、jpg、png,而根据需要,可更改或添加其他文件类型,如rar、mov等,不同文件扩展名间使用“|”分割。

       这样的话,就可以基本做到简单的防止被盗链情况的发生,而且可以尽最大可能的减少服务器流量的无畏消耗,当然了,如果你不在意这点流量的话,那么可以不用考虑上述设置啦!.htaccess可以控制和实现的功能很多,以后再详细分享,今天先到这里:)

.htaccess 典型的一个例子:

RewriteEngine ON 
RewriteCond %{HTTP_HOST} ^abc.com$  [OR] 
RewriteCond %{REQUEST_URI} ^/$ 
RewriteRule ^(.*)$ http://www.999.com/ [R=301,L] RewriteEngine on RewriteCond %{ HTTP_HOST } ^888.com RewriteRule ^(.*)$ http://888.com/hot$1 [R=301,L] RewriteCond %{ HTTP_HOST } ^www.888.com RewriteRule ^(.*)$ http://www.888.com/hot$1 [R=301,L]
RewriteCond的语法如下:
RewriteCond  TestString  CondPattern  [Flags]
其中的TestString是指一个文本格式的条件,例子中用的是环境变量名HTTP_HOST所包含的内容(Name= Value),这是一个map(键值对)格式的数据类型。
CondPattern是条件参数,这儿以第一个例子为例,就是abc.com。
Flags标识是是第三个参数,可以用来紧跟下一个条件,这儿用OR表示或者,如果没有[Flags],则用隐含的AND,表示并且。其它的还可以NC等等,表示忽略大小写
RewriteRule的语法如下:
RewriteRule  Pattern  Substitution [Flags]
其中的Pattern就是参数,一般为一些文件的扩展名,Substitution是用来替换前面用的,这儿的Flags,常用的R表示redirect(强制重定向),F表示forbidden(禁止访问),L表示last(最后),通常当你希望停止重写操作而立即重定向时,可用它。
更多您可能感兴趣的例子《.htaccess实现301网页永久重定向及302临时重定向

 
.htaccess 用到的正则表达式

元字符^(和数字6在同一个键位上的符号)和$都匹配一个位置,这和\b有点类似。^匹配你要用来查找的字符串的开头。

$匹配结尾。比如一个网站如果要求你填写的QQ号必须为5位到12位数字时,可以使用:^\d{5,12}$。

\b代表着单词的开头或结尾,也就是单词的分界处,它只匹配一个位置。

\d是个新的元字符,匹配一位数字(0,或1,或2,或……)。例:0\d{2}-\d{8} 匹配这样的字符串:以0开头,然后是两个数字,然后是一个连字号“-”,最后是8个数字(也就是中国的电话号码。当然,这个例子只能匹配区号为3位的情形)。

\s匹配任意的空白符,包括空格,制表符(Tab),换行符,中文全角空格等。

\w匹配字母或数字或下划线或汉字

\来取消字符的特殊意义。可使用\.和\*。要查找\本身,也得用\\.

[ ] 匹配没有预定义元字符的字符集合,在方括号里列出它们就行了。
例: [aeiou]就匹配任何一个英文元音字母,[.?!]匹配标点符号(.或?或!)
[0-9]代表的含意与\d就是完全一致的:一位数字;同理[a-z0-9A-Z_]也完全等同于\w

.匹配除 “\n” 之外的任何单个字符。要匹配包括 ‘\n’ 在内的任何字符,请使用象 ‘[.\n]’ 的模式。
例子:\(?0\d{2}[) -]?\d{8}。
像(010)88886666,或022-22334455,02912345678等。
分析:首先是一个转义字符\(,它能出现0次或1次(?),然后是一个0,后面跟着2个数字(\d{2}),然后是)或-或空格中的一个,它出现1次或不出现(?),最后是8个数字(\d{8})。

* 重复零次或更多次
+ 重复一次或更多次
? 重复零次或一次
{n} 重复n次
{n,} 重复n次或更多次
{n,m} 重复n到m次

One Reply to “.htaccess是什么文件?可以实现哪些功能?.htaccess正则表达式”

发表评论