.htaccess百度百科说法。
.htaccess文件(或者"分布式配置文件"提供了针对目录改变配置的方法, 即,在一个特定的文档目录中放置一个包含一个或多个指令的文件, 以作用于此目录及其所有子目录。作为用户,所能使用的命令受到限制。管理员可以通过Apache的AllowOverride指令来设置。
- 子目录中的指令会覆盖更高级目录或者主服务器配置文件中的指令。
- .htaccess必须以ASCII模式上传,最好将其权限设置为644。
Unix、Linux系统或者是任何版本的Apache Web服务器都是支持.htaccess的,但是有的主机服务商可能不允许你自定义自己的.htaccess文件。国内的大多数虚拟主机就没有这个功能。我所知道的提供这个功能的有康盛世纪(www.redphp.cn 也支持哦!)。
启用.htaccess,需要修改httpd.conf,启用AllowOverride,并可以用AllowOverride限制特定命令的使用。如果需要使用.htaccess以外的其他文件名,可以用AccessFileName指令来改变。例如,需要使用.config ,则可以在服务器配置文件中按以下方法配置:AccessFileName .config 。
笼统地说,.htaccess可以帮我们实现包括:文件夹密码保护、用户自动重定向、自定义错误页面、改变你的文件扩展名、封禁特定IP地址的用户、只允许特定IP地址的用户、禁止目录列表,以及使用其他文件作为index文件等一些功能。
看我的设置。
ErrorDocument 404 /404.html
Options -Indexes
<ifmodule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTP_REFERER} !xdeng.cn [NC]
RewriteCond %{HTTP_REFERER} !google.com [NC]
RewriteCond %{HTTP_REFERER} !google.cn [NC]
RewriteCond %{HTTP_REFERER} !baidu.com [NC]
RewriteCond %{HTTP_REFERER} !yahoo.com [NC]
RewriteCond %{HTTP_REFERER} !msn.com [NC]
RewriteCond %{HTTP_REFERER} !sougou.com [NC]
RewriteCond %{HTTP_REFERER} !youdao.com [NC]
RewriteCond %{HTTP_REFERER} !sousou.com [NC]
RewriteCond %{HTTP_REFERER} !feedsky.com [NC]
RewriteCond %{HTTP_REFERER} !soso.com [NC]
RewriteRule .*.(gif|jpg|png|jpeg|swf)$ /replace.gif [R,NC,L]
</ifmodule>
第一行自定义404错误页
第二行禁止显示目录列表
第三行参考http://www.qipao8.com/content/content-34.html 里防盗链设置,因为我这空间有流量限制。内容如下。
htaccess防盗链设置
在网上搜索了很多用htaccess防盗链的文章,大多没写的很详细,对新手造成很多困解,以下是我的总结:
代码如下
--------------------------------------
<ifmodule mod_rewrite.c>
#开启mod_rewrite引擎
RewriteEngine On
#设置合法请求源
#RewriteCond %{HTTP_REFERER} !^$ [NC]
#允许直接输入网址访问资源,建议关闭此项
#否则鼠标右键另存仍可访问资源
RewriteCond %{HTTP_REFERER} !qipao8.com [NC]
RewriteCond %{HTTP_REFERER} !google.com [NC]
RewriteCond %{HTTP_REFERER} !google.cn [NC]
RewriteCond %{HTTP_REFERER} !baidu.com [NC]
RewriteCond %{HTTP_REFERER} !yahoo.com [NC]
RewriteCond %{HTTP_REFERER} !msn.com [NC]
RewriteCond %{HTTP_REFERER} !sougou.com [NC]
RewriteCond %{HTTP_REFERER} !youdao.com [NC]
RewriteCond %{HTTP_REFERER} !sousou.com [NC]
RewriteCond %{HTTP_REFERER} !feedsky.com [NC]
RewriteCond %{HTTP_REFERER} !soso.com [NC]
#允许访问资源的网址,当然是包括搜索站和你自己的站
#本地测试添加 127.0.0.1即可
RewriteRule .*.(gif|jpg|png|jpeg|zip|rar|swf)$ /replace.gif [R,NC,L]
#非允许网站访问则限制资源gif,jpg...指向设定文件replace.gif
#可以加"|"补充你想防止被盗链的文件名后缀
</ifmodule>
-------------------------------------
注意:这里的replace.gif不能和htaccess放在同一目录下,也不能包含在htaccess所属的子目录里;
比如htaccess在/root/web/里,replace.gif就不能在/root/web/或/root/web/img/等web的子目录里,replace.gif可以放在/root/下面或/root/img/里;因为gif文件是受限资源,定向到replace.gif时是不会显示这个gif图片的。别人盗链的话只会显示一个"X",没有广告的效果了。
当然如果你一定要把replace.gif和htaccess放在同一目录下,可以把replace.gif 改成replace.bmp或replace.html等不在受限范围内的文件名。
另外解释:R意思是:重定向;NC是不区分字母大小写;L是终止重定向;(如果gif是受限资源,replace.gif和htaccess又在同一目录下,不用“L”参数终止重定向的话,那就成了个死循环了。)