1.为什么要使用.htaccess?
很多网站都是租用服务器和虚拟主机的,其服务器的配置并不能修改。当我们有特殊需求时,就要通过配置apache配置的扩展配置文件.htaccess文件来实现。可以实现比如:自定义错误页面、禁止目录被浏览、地址重定向、目录保护、改变默认首页索引、防止网站图片盗链等需求。
2.使用.htaccess的条件
要在服务器上使用.htaccess文件配置,必须要求服务器开通对于的支持。两个条件:
1.模块开启mod_rewrite
2.AllowOverride All
3.要使用.htaccess,apache下http.conf该如何配置
需要改两个地方:
1.将工作目录下的AllowOverride None 改为AllowOverride All。
2.开启.mod_rewrite模块(#去掉)。
#LoadModule rewrite_module modules/mod_rewrite.so
4.htaccess常用配置写法
4.1.自定义错误页面
写法:ErrorDocument 错误代码 空格 /目录名/文件名.扩展名
例子:
ErrorDocument 404 /404.html
ErrorDocument 500 /help/errors/internalerror.html
4.2.禁止/允许目录被浏览
写法:IndexIgnore /
有些服务器本身就已经禁止了目录被浏览并会提示。如果开始调试时,想要开通此功能,只需要添加一句:
写法:
Options +Indexes
4.3.页面重定向
写法1:
Redirect permanent [old directory or file name][空格][new directory or file name]
其中permanent(永久)是为了告诉搜索引擎,老的链接已经移到新链接了。
写法2:Redirect /旧页面地址[空格]新页面的地址
例子:
Redirect permanent /oldhtmlfile.htm http://your-domain.com/newhtmlfile.htm
4.4.改变默认首页
DirectoryIndex homapage.html somepage.html myindexpage.html
4.5.防止网页图片被盗连
写法:
RewriteEngine on
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://(www\.)?your-domain.com/.*$ [NC]
RewriteRule .(gif|jpg)$ - [F]
或者别人盗链时显示自己的提示图片
RewriteEngine on
RewriteCond % !^$
RewriteCond % !^http://(www/.)?域名.com/.*$ [NC]
RewriteRule /.(gif|jpg)$ http://www.域名.com/替代图片文件名 [R,L]
4.6.缓存文件
缓存文件是提高网站访问速度方法之一。
<FilesMatch “.(flv|gif|jpg|jpeg|png|ico|swf|js|css|pdf)$”>
Header set Cache-Control “max-age=2592000″
</FilesMatch>
有时,想对某些文件类型禁止使用缓存
Header unset Cache-Control
4.7.保护你的 htaccess 文件
order allow,deny
deny from all
5.使用.htaccess存在的问题
1.性能问题
AllowOverride启用了.htaccess文件,apache服务器需要在每个目录中查找.htaccess文件。因此会导致性能下降。另外对每一个请求,都需要读取一次.htaccess文件,还有 apache必须在所有上级的目录中查找.htaccess文件以使有效的指令都起作用。
例如:如果客户端请求/www/htdocs/help中的页面。服务器必须查找以下四个额外文件,即使文件不存在。
/.htaccess
/www/.htaccess
/www/htdocs/.htaccess
/www/htdocs/help/.htaccess
当然你可以仅仅允许根目录使用.htaccess文件,即目录深度越深,则访问的额外文件越多,性能越低。
2、安全问题
由于项目根目录下的.htaccess文件与主配置文件中的配置指令完全等效,那么这样就有可能带来服务器安全问题。这样你就必须考虑是否设置AllowOverride None来完全禁用.htaccess文件。