.htaccess是什么?php
.htaccess叫分布式配置文件,它提供了针对目录改变配置的方法——在一个特定的文档目录中放置一个包含一个或多个指令的文件, 以做用于此目录及其全部子目录。而且子目录中的指令会覆盖更高级目录或者主服务器配置文件中的指令。通常来讲,若是你的虚拟主机使用的是Unix或Linux系统,或者任何版本的Apache网络服务器,从理论上讲都是支持.htaccess的。html
如何创建.htaccess?windows
在咱们使用的windows(瘟到死)主机上建立.htaccess文件是很困难的。写文件倒很容易,你只须要在文字编缉器(例如:记事本)里写下适当的代码。困难的是文件的保存,由于.htaccess是一个古怪的文件名,其实它并无文件名,只有一个由8个字母(htaccess)组成的扩展名,而在windows系统中这是没法接受的文件名。所以,这里有3个方法能够实现。浏览器
方法一:保存文件的时候将文档保存成名为“.htaccess” (包括引号)或者htaccess.txt亦或者1.htaccess。再将其上传到服务器上,以后直接使用FTP软件来重命名。服务器
方法二:保存文件的时候选择文件—>另存为,保存类型选全部文件,而后文件名输入.htaccess ,这样就OK啦o(∩_∩)o…。网络
方法三:直接在你的Unix或Linux虚拟主机上创建。dom
.htaccess是什么?.htaccess是在Apache HTTP Server这款服务器架设软件下的一个对于系统目录进行各类权限规则设置的一个文件,存在于Linux操做系统中。比较常见的是定义默认首页名称,404页面,301转向,等等,还有更多的功能好比伪静态,限制图片外链,限制下载,密码保护,去除页面广告等等,还有很是多的功能就不一一列举。
其实这些功能大多能够在cPanel控制面板来进行设置的(至关因而.htaccess的图形化界面)。但对于高手来说,cPanel对于htaccess提供的功能仍是太少了点,手工编辑才是王道。相对于国内的虚拟主机,绝大多数是没有这个功能的
目录规则
通常咱们将.htaccess文件放置在网站的根目录,控制所在目录及全部子目录,而若是放置在子目录中,会受上级目录中.htaccess文件影响,是不起任何做用的。分布式
举几个例子,如下部分引用维基百科。网站
自定义错误页面(直接拷贝便可)spa
ErrorDocument 404 /error-pages/not-found.html
ErrorDocument 503 /error-pages/service-unavailable.html
————————————————————————-
IP禁止
Order allow,deny
Deny from 123.45.67.8
Deny from 123.123.7
Allow from all
上面能禁止IP地址在123.45.67.8以及IP地址开头为123.123.7的任何人。例如123.123.74.42 就不能获得访问。
————————————————————————-
变动默认首页
DirectoryIndex homepage.html
————————————————————————-
去除页面广告(不必定适用全部免费空间)
LayoutIgnoreURI *.php
LayoutIgnoreURI *.cgi
LayoutIgnoreURI *.htm
LayoutIgnoreURI *.html
LayoutIgnoreURI *.txt
————————————————————————-
页面跳转
Redirect page1.html page2.html
若是某人访问 http://www.example.com/page1.html,他将被跳转到(带有HTTP状态代码302)的http://www.example.com/page2.html
————————————————————————-
服务器内置SSI
AddType text/html .shtml
AddHandler server-parsed .shtml
Options Indexes FollowSymLinks Includes
————————————————————————-
防止图片热链
后面的 .htaccess规则使用了mod rewrite。
特别域名
RewriteEngine on
RewriteCond %{HTTP_REFERER} ^http://([^/]+\.)?baddomain1\.com [NC,OR]
RewriteCond %{HTTP_REFERER} ^http://([^/]+\.)?baddomain2\.com [NC,OR]
RewriteCond %{HTTP_REFERER} ^http://([^/]+\.)?baddomain3\.com [NC]
RewriteRule \.(gif|jpg)$ http://www.example.com/hotlink.gif [R,L]
非特别域名
RewriteEngine on
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://(www\.)?example.com/.*$ [NC]
RewriteRule \.(gif|jpg)$ http://www.example.com/hotlink.gif [R,L]
除非 example.com有这个图片,浏览器才能看到hotlink.gif.
注意:Hotlink热链保护使用 .htaccess 依赖客户端在http GET请求中发送正确的”提交”值。像尝试使用Windows Media Player发送空白的提交到.htaccess 来保护电影档案是无效的。
禁止.htaccess文件被查看
在.htaccess文件中加入以下代码就能够禁止别人访问你的.htaccess文件:
<Files .htaccess>
order allow,deny
deny from all
</Files>
这个网上的大部分版本都有错误,大部分版本丢掉了<Files .htaccess> ,结果致使全部文件都被禁止访问。若是用了错误的规则,全部内容都将没法访问。
一样道理,若是要禁止其余文件的访问,用其余文件名替换就能够了。