Apache服务器的htaccess文件配置 rewrite/防盗链/屏蔽爬虫蜘蛛
htaccess是Apache服务器的一个配置文件,具有强大的功能,本文介绍如何编辑该文件,让网站实现封锁某国家IP网段、防止图片、文件盗链、保护主机下的目录与文件、创建自定义的出错页面、把某些特殊的IP地址的请求重定向到别的站点、把老的域名转像新的域名,这些功能。
htAccess 文件(Hypertext Access file)是Apache Web服务器的一个非常强大的配置文件,对于这个文件,Apache有一堆参数可以让你配置出几乎随心所欲的功能。
使用.htaccess挡掉搜寻引擎机蜘蛛
挡掉百度搜寻引擎
百度是传说中的暴力搜寻引擎,不遵守搜寻引擎的规则,若你尝试使用robot.txt来挡住,那非常恭喜你,绝对无效。所以一定要使用比较暴力、强硬的手段才能,因此透过.htaccess就可以处理了,如果你要挡掉一些搜寻引擎(像是百度、搜狗等),那请将以下程式码贴到htaccess.txt文件中。
SetEnvIfNoCase User-Agent "^Baidu" bad_botSetEnvIfNoCase User-Agent "^sogou" bad_bot
SetEnvIfNoCase User-Agent "^Bloghoo" bad_bot
SetEnvIfNoCase User-Agent "^Scooter" bad_bot
Deny from env=bad_bot
挡掉Google搜寻引擎
如果你想要挡掉Google搜寻引擎,当然也可以透过.htaccsee挡掉,只要输入以下程式码就可以了,如果要连同暴力百度搜寻引擎一起封锁,那就把这两串程式码放在同一个htaccsee.txt文件中。
SetEnvIf User-Agent "^Googlebot" googleDeny from env=google
用.htaccess封锁某国家IP网段
有时候自己可能会规画网站的发展方向,有不欢迎某些特定的国家来访,这时候第一个想法应该是要锁该国家的IP,但是却不知从何做起?因为不知道那个国家的IP跟本不能锁,这时候可以透过「blockcountry」线上工具网站产生的htaccess语法来替自己封锁想要封锁的IP网段国家。
第1步 来到Block country(http://www.blockcountry.com) 网站首页,首先你会看到一个框框,框框中有许多国家,请您挑选要封锁的国家,可以复选,选择完成后请点击下方的﹝Block Now!﹞。
第2步 将刚刚网页上产生的程式码贴到htaccess文件中,然后储存。Apache对于被拒绝的IP会返回403错误。
用.htaccess防止图片、文件盗链
一个图文并茂的网站,最怕的就是文章转贴,虽然现一直在尊重着作权法,但还是有许多人假装没看见?许多人喜欢「复制→贴上」,但这样一个转贴动作却会对一个网站造成莫大的伤害,除了辛苦写的文章被偷走外,连图片也盗链!图片或文件被盗连最怕的就是后续的流量,为了避免这种问题,我们必须自立自强,防止盗链这种可恶的行为!
如果是cPanel虚拟主机,防盗连的方法不外乎就是到cPanel后台进行设定。如果你是其他类型的空间后台或者是说你只有FTP权限的空间,那该怎么办呢?其实只要你的空间支持.htaccess文件并且支持ReWrite,你都可以防止图片与文件的盗链!
通过.htaccess来防止网站的图片、压缩文件、或视频等非Html文件被盗链的方法相当简单,通过在该文件中加入几句命令即可保护我们宝贵的带宽。例如chinaz.com的设置如下:
RewriteEngine onRewriteCond %{HTTP_REFERER} !^$ [NC]
RewriteCond %{HTTP_REFERER} !nobing.cn [NC]
RewriteCond %{HTTP_REFERER} !google.com [NC]
RewriteCond %{HTTP_REFERER} !baidu.com [NC]
RewriteCond %{HTTP_REFERER} !www.domain.com [NC]
RewriteRule .*\.(gif|jpg)$ http://www.chinaz.com/no.png [R,NC,L]
利用.htaccess来保护主机下的目录与文件
一般来说很多虚拟主机预设是没有开启保护网站主机目录下的文件,其实很危险的,假若你的目录下忘记放置index文件,那很可能您目录就被看光,一个不小心很可能重要资料就被拿走,这是蛮严重的一件事情。如果是Linux主机,我们可以透过简易的.htaccess语法来保护网站主机目录下的文件,让别人无法轻易看见。
平常我们使用的最简单保护目录的方法,莫过于使用「index.php」、「index.html」等等之类的网站index文件,因为主机内预设的设定在目录中预设就是要抓index文件,而index文件通常会有很多种,主机会依续排列下来抓取,所以可以设定index文件来让主机抓取,以达到保护目录的效果。但如果主机需要的index文件没有一个存在,这时候主机就会直接显示目录内的东西了,因为主机不知道要抓取谁当作主要网页,所以会全部显示。
虽然使用index文件来保护目录是可行的,但是每个子目录都需要传一个index文件其实蛮累人的,这时候我们就可以利用「.htaccess」来批量处理。
Options -Indexes
语法的进阶使用
当然该语法还有其他相关的用途,以下列出简单的几项供大家参考使用,如果你觉得以下的语法不是你想要或是想学更多,你可以到Apache官方网站来看看英文说明书,查看看还有什么关于「indexoptions」的用途或是其他不错的功能喔!
Options +Indexes:显示目录下所有文件
Options -Indexes:隐藏目录下所有文件 (上面已经介绍过)
IndexOptions +FancyIndexing:显示目录下所有文件,文件前面包含档案类型的小图示
IndexOptions -FancyIndexing : 显示目录下所有文件,但不包含文件类型的小图示
IndexIgnore *.php *.exe:隐藏特定的文件, 其余文件正常显示(隐藏所有的php和exe文件)
使用.htaccess 创建自定义的出错页面
对于Linux Apache来说这是一项极其简单的事情。使用下面的.htaccess语法你可以轻松的完成这一功能。(把.htaccess放在你的网站根目录下)
ErrorDocument 401 /error/401.PHPErrorDocument 403 /error/403.php
ErrorDocument 404 /error/404.php
ErrorDocument 500 /error/500.php
把某些特殊的IP地址的请求重定向到别的站点
ErrorDocument 403http://www.youdomain.comOrder deny,allow
Deny from all
Allow from 124.34.48.165
Allow from 102.54.68.123
把老的域名转像新的域名
# redirect from old domain to new domainRewriteEngine On
RewriteRule ^(.*) $http://www.yourdomain.com/$1 [R=301,L]