Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2542720
  • 博文数量: 271
  • 博客积分: 6659
  • 博客等级: 准将
  • 技术积分: 3141
  • 用 户 组: 普通用户
  • 注册时间: 2009-11-17 10:24
文章分类

全部博文(271)

文章存档

2016年(2)

2015年(12)

2014年(7)

2013年(19)

2012年(22)

2011年(81)

2010年(128)

分类: LINUX

2010-09-04 23:39:26

Apache下htaccess的配置使用详解

      看到群里很多前辈都在讨论.htaccess的用法,自己之前也小用过,只做了404的重定向,当然.htaccess的功能远不止这些,他还可以帮助我们做很多(比如:自定义错误页面、禁止目录被浏览、地址重定向、目录保护、改变默认首页索引、防止网站图片盗链 等)。今天我在本地localhostapachehtaccess做了详细的整理和测试。

      为什么要使用.htaccess?

      oophper.com答:很多网站都是租用服务器和虚拟主机的,其服务器的配置我们并不能改。当我们有特殊要求时,比如定义最简单的404(页面未找到)的错误页面,我们就只能通过apache配置的扩展配置(或者说是子配置)来更改扩展原服务器的配置。这个配置就是.htaccess文件,他想但与apache下的http.conf文件的延续。

      使用.htaccess的条件

      oophper.com答:要在服务器上使用.htaccess文件配置,必须要求服务器开通对于的支持。两个条件:1.mod_rewrite模块开启;2. AllowOverride All

      要使用.htaccessapachehttp.conf该如何配置

         oophper.com答:很简单,只需要改两个地方:

  1. 将工作目录下的AllowOverride None 改为AllowOverride All。具体位置为你可以在http.conf下搜索AllowOverride controls what directives may be placed in .htaccess files. 该句下面的那个AllowOverride就是要改的位置。
  2. 开启.mod_rewrite模块。将#LoadModule rewrite_module modules/mod_rewrite.so前的#去掉即可。

 

       .htaccess实现各种功能的配置写法

自定义错误页面

oophper.com配置解答:

写法:ErrorDocument 错误代码 空格 /目录名/文件名.扩展名

例子:ErrorDocument 404 /404.html

        ErrorDocument 500 /help/errors/internalerror.html

这样当文件未找到(404)或者服务器错误(500)时就会自动跳转至写好的提示页,有助于网站的用户体验。至少不会显示浏览器默认的提示信息,也可以防止服务器的信息泄露,既安全又友好。

禁止/允许目录被浏览

oophper.com配置解答:

写法:IndexIgnore */*

                很多服务器本身就已经禁止了目录被浏览并会提示。如果你在建站初期调试,想要开通此功能也未尝不可。只需要添加一句:

写法: Options +Indexes

 

页面或网址重定向

oophper.com配置解答:

写法1Redirect permanent [old directory or file name][空格][new directory or file name]

其中permanent(永久)是为了告诉搜索引擎,老的链接已经移到新链接了。

写法2Redirect /旧页面地址[空格]新页面的地址

例子:

Redirect permanent /oldhtmlfile.htm

 

这可以帮助我们将用户引导到我们想让其看到的页面,也可以用作域名的重定向。有时候某些目录我们不想对用户开放,比如cache目录禁止用户直接输入地址访问,我们就可以用htaccess的重定向配置将其直接带到首页。

改变默认首页索引页

oophper.com配置解答:

写法:

DirectoryIndex homepage.htm

DirectoryIndex somepage.htm

 

多个文件名之间可以用空格隔开,这样就会按顺序将所有列出的文件列为可能的索引文件, 记住,每一个入口只能写在一行.

DirectoryIndex homapage.html somepage.html myindexpage.html anything.html

 

防止网页图片被盗连

oophper.com配置解答:

很多服务器供应商都是限流量和限cpu的。特别是流量,每个月超过了限制的流量就需要支付额外的大洋,而自己网站的图片被盗链这就相当于别人耗了你的流量却并没有给你带来流量。那是相当郁闷的。自然要防止被盗连。同时有些隐私比如用户的相册如果被盗连了可能泄露隐私,这也是不好的。你可以看到百度空间,sina博客,qq空间均作了防盗链的处理。

写法:

RewriteEngine on

RewriteCond %{HTTP_REFERER} !^$

RewriteCond %{HTTP_REFERER} !^http://(www\.)?your-domain.com/.*$ [NC]

RewriteRule .(gif|jpg)$ - [F]

在上面的代码中,将[your-domain]用你真实的域名代替[没有www],对于(www.\),用实际的子域名代替(sub-domain.\)

或者用图片代替之,这样别人盗链的图片就会显示你所要提示的图片。

RewriteEngine on

RewriteCond % !^$

RewriteCond % !^http://(www/.)?域名.com/.*$ [NC]

RewriteRule /.(gif|jpg)$ 域名.com/替代图片文件名 [R,L]

 

使用.htaccess文件的不足

1、性能 AllowOverride启用了使用.htaccess文件,则apache需要在每个目录中查找.htaccess文件。因此会导致性能下降。另外对每一个请求,都需要读取一次.htaccess文件,还有 apache必须在所有上级的目录中查找.htaccess文件以使有效的指令都起作用,比如如果客户端请求/www/htdocs/help中的页面。服务器必须查找
/.htaccess
/www/.htaccess
/www/htdocs/.htaccess
/www/htdocs/help/.htaccess

四个额外文件(即使这些文件都不存在,当然你可以仅仅允许根目录使用.htaccess文件),也就是说目录深度越深,则访问的额外文件越多,性能越低了。

2、安全
由于在/www/htdocs/help下面的.htaccess文件中放置指令与在主配置文件中中放置相同的指令是完全等效的,这样允许用户自己修改服务器配置,
可能就会导致某些不愿意发生的意想不到的修改,这样就会造成服务器安全问题。这样你就必须考虑是否设置AllowOverride None来完全禁用.htaccess文件。

 

                                                        -----原创,转载请注明

阅读(9805) | 评论(3) | 转发(0) |
给主人留下些什么吧!~~

suyuwen12015-01-30 09:54:42

Apache2.4.x版wampserver本地php服务器如何让外网访问及启用.htaccess
http://www.ihref.com/read-16915.html

chinaunix网友2011-01-04 19:56:44

很好的, 收藏了 推荐一个博客,提供很多免费软件编程电子书下载: http://free-ebooks.appspot.com

chinaunix网友2011-01-04 19:56:28

很好的, 收藏了 推荐一个博客,提供很多免费软件编程电子书下载: http://free-ebooks.appspot.com