Apache服务器htaccess文件配置大全 优化你的网站

作者mazerain 文章分类 分类:前端 文章评论 0条评论 阅读次数 已被围观 2039

  此文件有着严格的编码与格式,多一个空格与少一个空格都有可能造成服务器的500Error,因此,我们不建议使用windows系统自带的记事本编辑该文件。最好的手动编辑方法是使用UE或notepad2等高级文本编辑器。如果不方便下载或手动编写的文件出错,也推荐在线htaccess文本编辑器,http://www.wangqu.org/htaccess/,目前这款编辑器已经非常完善,并且在二次开发下已经增加了很多新功能,简单易用,完美支持多条件复杂任务的htaccess文件智能生成任务。

  在下文中我们也将同时介绍此htaccess在线生成器的使用方法与注意事项。

  1、开启网站的图片防盗链功能

  如果网站的流量有限,那么图片防盗链是非常必要的。不仅可以减少流量浪费,而且可以减轻服务器负担。开启图片防盗链功能需要在htaccess文件中加入以下代码:

  RewriteEngineon

  RewriteCond%{HTTP_REFERER}!^$

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

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

  RewriteRule.*\.(gif|jpg|jpeg|bmp|png)$[R,NC,L]

  上面的代码中,0356sh.com与0356shimg.com分别是允许访问网站图片的域名,后面的baidu.com则是替换成的目标图片地址。上面还包含了图片文件的后缀参数,可以自行更改。如果通过htaccess在线生成器生成此段代码,仅仅需要填写几个允许访问的域名(不带www与http),然后再填写好准备替换的图片地址。

  2、自定义404、500等错误返回页

  如果你不希望网站在找不到网页的时候出现“404该页无法显示”,就试试自己定义一个找不到网页的出错页面吧!需要在htaccess文件中加入

  ErrorDocument404/404.htm

  前面的404是其错误代号,后面的/404.htm是自己定义的404页面的路径。需要注意的是,如果这个404页面的大小小于512B,则IE会忽略此页面,也就不会生效了。后面的参数需要使用网站相对路径。在htaccess在线生成程序中,请切换到“自定义错误页面”选项卡,然后在“404(未找到)”后面的输入框中输入你的错误页面地址即可。在线生成工具还可以处理其它类型的错误,以此类推即可。请预先将404错误页面制作好上传到网站目录。

  3、首先是屏蔽网站目录列表

  目录列表是在网站找不到默认文件时的应急措施,服务器将毫无保留的返回一个当前目录下的所有文件。这将给网站带来非常大的安全隐患。因此,现在很多程序都会在任何子目录下面放一个index.htm文件来避免这种疏漏。但是,通过htaccess文件我们可以彻底的解决这个问题。

  在文件中加入以下代码:

  Options-Indexes

  这将彻底关闭网站的目录列表功能,但对于网站的正常访问是没有任何影响的。如果想显示文件列表,则只需要将“-”更改为“+”。如果使用htaccess在线生成工具,只需要把“是否在没有默认文档的目录显示文件列表”菜单选择成“隐藏”即可,程序将自动生成相关代码。

  4、最复杂的WWW统一网址格式与重定向了

  在SEO的观点里认为,如果***.com与www.***.com都能访问,这对于搜索引擎来说是个非常不好的体验,也很容易造成权重分散。而我们要做的就是将带www的网址与不带www的网址进行统一。

  我们不建议手动编写该段代码,自动生成程序已经做了完善的判断,你只需要切换到“WWW域名重定向”选项卡,在WWW域名重定向后面的地址栏中填入你希望最终使用的域名即可!注意,此处填写的域名必须为完整网址,比如http://www.xxxx.org或者http://xxxx.org。程序将根据您的输入自动判断使用正重定向还是逆重定向。

  5、默认文档不对口很恼火,还得做一个跳转页面

  有些虚拟主机就是另类,不适用默认的文件名,或顺序非主流。那么通过以下的代码就可以自己定义这个页面的文件名了。比如index.htm、default.php等等:

  DirectoryIndexindex.php

  这行代码将index.php作为默认首页。其他页面请直接替换例子中的index.php。如果网站有多个页面需要作为首页,请按照DirectoryIndexindex.phpindex2.php的格式编写文件。此项设置在htaccess生成器中,仅仅需要你依次填入首页的文件名即可,非常方便。

  6、通过htaccess开启网站图片缓存

  某些虚拟主机限制了网站的流量,如果浏览器每次都从服务器下载最常用的图片文件,将会浪费大量的带宽。因此可以开启图片缓存,浏览器在缓存过期前将会自动从缓存区载入图片文件。此功能在文件中加入以下代码:

  HeadersetCache-Control“max-age=3600″

  这里要说说mod_expires模块,mod_expires可以减少10%左右的重复请求,让重复的用户对指定的页面请求结果都CACHE在本地,根本不向服务器发出请求。

  在使用之前,首先要确认一下”mod_expires”模组是否有启用.如果是自己安装Apache来架设网页主机的话,这里我们可以透过编辑Apache的”httpd.conf”设定档来处理.搜寻一下,你可能会找到这么一行: #LoadModuleexpires_modulemodules/mod_expires.so

  将该行前面的”#”字号删除,然后将”httpd.conf”设定档储存后,重新启动Apache来使这个更新生效.

  当然如果我们是租用虚拟主机的话,”httpd.conf”设定档我们一般用户是接触不到的,而在网站根目录里写个”.htaccess”设定档,我想在运用上相对是较灵活的.”mod_expires”的设定资料除了可以写在Apache的”httpd.conf”设定档中,也可以写在”.htaccess”设定档里.

  我们知道在使用浏览器浏览网页时,浏览器会把网页资料快取(Cache)下来储存在本机端,用以加快下回浏览相同网页时不必再重新由网站上下载,进而有加速的效果.使用mod_expires模组来加速网页浏览,这里所谓的”加速”,其实是利用”mod_expires”的功能,来设定网页文件的过期时间,加长网页文件被浏览器快取(Cache)保存的时间.如此一来,只要网页文件的过期时间未到,浏览器就会引用快取的资料,而不用花时间再去下载网站上的资料.另一方面带给站长的好处是,可以减少浏览者对网站的流量耗用(例如有些虚拟主机有限制网站可使用的流量).

  接下来我们直接由范例中来学习吧.

  范例一:

  ExpiresActiveOn

  ExpiresDefault“accessplus10days”

  ExpiresByTypetext/css“accessplus1second”

  范例二:

  ExpiresActiveOn

  ExpiresDefaultA86400

  ExpiresByTypeimage/x-iconA2592000

  ExpiresByTypeapplication/x-javascriptA2592000

  ExpiresByTypetext/cssA2592000

  ExpiresByTypeimage/gifA604800

  ExpiresByTypeimage/pngA604800

  ExpiresByTypeimage/jpegA604800

  ExpiresByTypetext/plainA604800

  ExpiresByTypeapplication/x-shockwave-flashA604800

  ExpiresByTypevideo/x-flvA604800

  ExpiresByTypeapplication/pdfA604800

  ExpiresByTypetext/htmlA900

  范例三:

  ExpiresActiveOn

  ExpiresDefault A0  #1年

  ExpiresDefault A9030400  #1星期

  ExpiresDefaultA604800  #3小时

  ExpiresDefaultA10800″

  使用来包夹指令可以避免在mod_expires模组没有启用的情况下还要去执行.如果mod_expires模组确定已经启用,那不写也没关系,ExpiresActiveOn是指启用mod_expires功能,相对的Off就是关闭功能.

  ExpiresDefault指令是设定预设的过期时间.

  从范例一和范例二中,各位可以看到关于时间设定的方式有分两种,一个是文字叙述型,一个是代码加上秒数型.

  文字叙述型:

  “accessplus10days”意指浏览时起算10天.依照Apache官方说明文件,过期起算时间有三种,分别是access、now以及modification.其中access与now意义相同,而modification指的是网页文件的”最后编辑时间”.所以如果要以档桉的最后编辑时间起算,可以写成这样,”modificationplus10days”.而时间的指定也很简单,就是英文单字(years、months、weeks、days、hours、minutes、seconds).例如,可以写成这样,”accessplus1month15days2hours”.

  代码加上秒数型:

  A86400意指浏览时起算1天.格式是代码加上秒数.代码有分两种,”A”等同”access”,意指浏览时起算过期时间.使用代码”A”比较适合应用在不常变动的网页文件类型,例如图片.另外一种代码是”M”,其意义等同于”modification”,指的是网页文件的”最后编辑时间”.使用代码”M”比较适合应用在经常变动的网页文件类型,例如HTML页面这类经常更新内容的资料.秒数资料我在文后附上参考资料,可以供各位快速参考.

  ExpiresByType指令是依照不同的网页文件型态来做过期时间设定.

  例如,ExpiresByTypetext/css A2592000,意指网站上的CSS文档3天后过期;ExpiresByTypeimage/gif A604800,意指网站上的Gif图档在7天后过期.

  范例三里,使用了来包夹各型态的网页文件,而不是使用”ExpiresByType”指令,这也是一种用法.

  需要注意的是,上面的3600单位为秒,即超时时间,上图中的gif等为图片文件后缀,表示对这些文件生效。如果使用自动生成工具,为了开启此选项,请将“开启站点的图片缓存”选项卡选择一个超时时间。目前有十分钟、一小时、一天等选项可供设置。

  7、固定301、302网页重定向

  由于页面转移位置造成的404错误是我们大家都非常头痛的问题,但我们只需要做一个301的重定向就会完全解决这个问题了。在htaccess文件中加入以下代码:

  Redirectpermanent/old.htmhttp://www.***.com/new.htm

  前面一个参数使用相对路径,也可以使用目录名,后一个参数必须填写完整网址。这样才能生效,并且不出错误。在SEO中,搜索引擎也很快就会按照你的设置,将收录的网页更新。

  此外,htaccess还可以实现比如MIME文件类型修改、域名重定向等功能,因此,能充分利用好该文件将能让你的网站建设更加得心应手。

发表评论: