由于本人最近一直在研究Apache的官方手册,对.htaccess这个强大而灵活的配置文件产生了兴趣。同时,也有很多朋友向我询问.htaccess文件的相关疑难杂症,在此,我独家总结一下.htaccess这个文件的常见编写错误,也希望各位朋友能够汲取教训,达到更高的层次。
1、.htaccess文件是Apache的配置文件,因此直接决定了此文件使用IIS构建的网站无效。
在官方的说明中,.htaccess是网站的一个分布式配置文件,分布式顾名思义,就是可以分布在各个不同的目录下面,每个文件都有其不同的作用域。比如将文件放在“admin”目录下,那么这个配置文件只对admin及其子目录下的文件生效。
然而有很多初入门道的朋友并不了解,因此不知道如何处理这个配置文件。在此我告诉大家,如果你想要整个网站都生效,就将此文件建立在网站根目录下即可。
2、此文件极易造成服务器500错误,并且大部分原因都是Windows文件编码错误。
由于该文件是原生Linux下的文件,因此在Windows下不能使用系统自带的记事本程序创建这个文件。但是,可以通过编码转换,去掉BOM等多余的内容。但是,我们强烈建议使用Notepad2等富文本编辑器来创建这个文件,并且将之保存为UTF-8这种国际编码格式。当然,也可以使用一些在线htaccess编辑器来自动创建这个文件,文后将会有相关介绍。
3、.htaccess文件设置图片防盗链时,替换的目标图片一定不能是当前域下的图片文件。否则将会造成循环错误。
很多朋友会使用.htaccess文件达到图片防盗链的效果,减少空间由于图片盗链浪费的流量。但是,却忽视了这一点:不能将替换后的目标图片放在本域中。原因如下:本域使用了图片防盗链功能,因此,所有通过其它域访问本域的图片地址都会被重写为目标地址,但如果目标地址也是本域中的图片,就会造成循环错误,甚至可能导致客户端浏览器假死。
4、WWW域名统一跳转指令的安全写法。
很多朋友都会通过.htaccess文件将带WWW的域名与不带WWW的域名统一,然后写出了类似如下语句:
RewriteCond %{HTTP_HOST} !^www.domain.com? [NC]
注意,这是一种极不安全且不负责任的写法,原因在于使用了“!”(非)。这种写法将会把.htaccess所有作用域下的网址都进行跳转,比如会将“m.domain.com”跳转成“www.domain.com”,会把“bbs.domain.com也跳转成“www.domain.com”。其可能造成的问题可想而知。所以,该指令的正确、安全的写法应该是:
RewriteCond %{HTTP_HOST} ^(domain\.com)(:80)? [NC]
这就避免了干扰其它的子域名,同时,也避免了主机其它端口的跳转。这是一种非常严格而且安全的写法。
5、是否开启文件列表显示的指令:
Options -Indexes 或者 Options +Indexes
的indexes前面一定要添加“+”或者“-”,否则将会覆盖主机上级配置文件定义的其它重要设置。而这项在网上广为流传的“htaccessEditor”编辑器中竟然出现错误了。因此造成很多朋友发现使用这项功能后网站无法浏览了。原因是这样的:
Options后面的参数全部写上应该是:options (+-)ExecCGI (+-)FollowSymLinks (+-)Includes (+-)Indexes……如果不在参数的前面添加“+”或“-”,将会把指令默认为除了这个参数为开启,其它的参数都为关闭,与Linux下的Chmod命令类似。这就造成了把ExecCGI也关闭了,将会导致所有页面无法执行脚本。
上面所述这些常见错误都是我在编写“htaccess文件在线编辑器”时发现的,并且其中也有很多是网友们给我提的建议,在此我表示感谢!
同时,我给大家附上了几款非常好用的htaccess在线编辑器供大家收藏使用:
1、.htaccess Generator:http://developers.evrsoft.com/tools-htaccess-generator.shtml
这款编辑器的特点是可以方便的定义图片防盗链、404错误页面地址还有图片缓存控制与密码保护,但是是英文页面,且功能单一,不能进行灵活的设置。
2、.htaccess file generator:http://cooletips.de/htaccess/
这款编辑器功能强大,是在线编辑器的鼻祖。但是页面凌乱,语义模糊,没有任何说明,非常容易填写错误。但其强大的功能仍然是高手们的不二选择。
3、Htaccess Disable Hotlinking Code Generator:http://www.htmlbasix.com/disablehotlinking.shtml
这是专门用于生成图片防盗链的工具,因此,它也就有一个唯一的图片防盗链功能,但是做得非常细致,也非常灵活。可以详细的定义图片文件类型、目标图片的地址等参数。
4、.htaccess文件在线生成器:http://www.wangqu.org/htaccess/
客观的说这是在众多生成器中一款功能最全,最人性化的在线编辑器了。中文界面,包含图片防盗链、MIME类型添加、访问权限控制、自定义默认页面、自定义各种错误文档、网页重定向、图片缓存等九大功能,每一款功能都经过仔细的调试,并且有详细的填写示例与功能说明供参考。同时,它还有下载生成的.htaccess文件的功能,避免了自己建立文件造成的各种错误。
总结了这些.htaccess文件在编写过程中容易出现的错误,只是希望各位网站朋友能更好的建设自己的网站,最后,祝各位朋友网站访问量越来越大!