Apache .htaccess文件基本用法

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-Controlmax-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文件。

你可能感兴趣的:(服务器)