htaccess:根目录中.htaccess写法和概念

  鉴于目前很多的站点大多数使用的都是以PHP+MYSQL为主流的网站程序(ecshop、各种主流cms开源程序都是mysql+php),那么网站的配置文件是必须受到我们格外重视的。本文为笔者收集和整理了几乎所有.htaccess文件的配置使用方法及其作用,收集来源于互联网。

  301永久重定向

  上篇文章中已经讲到了301的概念和在linux主机、windows主机上面的操作。这里既然是讲.htaccess的配置了301、302必须要讲到的。废话不多说直接进入正题。

  使用301永久重定向避免www与根域名的权重是非常好的习惯和方法,但是从http头来进行设置有亮点不好,一是增加网页的http响应次数,延长 页面的响应时间

  二是比较容易设置成302临时重定向。所以笔者建议使用.htaccess文件来进行网站的301永久重定向。

  为什么这是搜索引擎友好的呢?因为现在很多现代的搜索引擎都有能根据检查301永久转向来更新它现有的记录的功能。

  代码如下(以www.AAA.com为例):

  RewriteEngine on
    RewriteCond %{http_host} ^AAA.com [NC]
      RewriteRule ^(.*)$ http://www.AAA.com/$1 [L,R=301]

  这是使访问AAA.com/的时候就会自动转到www.AAA.com,同样的,我们也可以反向设置,即访问www.AAA.com的时候自动转向至AAA.com:

RewriteEngine on
RewriteCond %{http_host} ^ www.AAA.com [NC]
RewriteRule ^(.*)$ http://AAA.com/$1 [L,R=301]

  【自定义Error页面】

  部分主机仅能在后台设置404错误页面,使用.htaccess文件可以对每个错误代码定制自己的错误页面。

  代码如下:

ErrorDocument 401 /error/401.php
ErrorDocument 403 /error/403.php
ErrorDocument 404 /error/404.php
ErrorDocument 500 /error/500.php

  【压缩文件】

  通过压缩你网站上的静态资源及其他文件的体积来优化网站的访问速度,它可以通过压缩text, html, javascript, css, xml等文件。

  代码如下

AddOutputFilterByType DEFLATE text/plain
AddOutputFilterByType DEFLATE text/html
AddOutputFilterByType DEFLATE text/xml
AddOutputFilterByType DEFLATE text/css
AddOutputFilterByType DEFLATE application/xml
AddOutputFilterByType DEFLATE application/xhtml+xml
AddOutputFilterByType DEFLATE application/rss+xml
AddOutputFilterByType DEFLATE application/javacript
AddOutputFilterByType DEFLATE application/x-javascript

  【静态资源浏览器缓存设置】

  对于那些并不会经常有变化更新的文件,设置静态文件缓存是非常非常重要的,它可以极大的提高页面访问速率,同样它也是Yahoo的YSLow评测标准的重要项目之一。

  代码如下:

ExpiresActive on //开启缓存
ExpiresByType text/css "access 1 month"//css文件缓存1个月
ExpiresByType text/plain "access 2 days"//纯文本内容缓存2天
ExpiresByType text/html "access 2 days"//html文件缓存2天
ExpiresByType application/javascript "access 1 month"//JS文件缓存1个月
ExpiresByType image/jpeg "access 1 month"//jpeg图片缓存1个月
ExpiresByType image/x-icon "access 1 month"//icon缓存1个月
ExpiresByType image/gif "access 1 month"//gif图片缓存一个月
ExpiresByType image/png "access 1 month"//png图片缓存一个月
ExpiresByType image/ico "access 1 month"//ico缓存1个月
ExpiresByType application/pdf "access 1 month"//pdf文件缓存一个月
ExpiresByType application/x-shockwave-flash "access 1 month"//flash缓存一个月
ExpiresDefault "access 1 month"// 默认(未提及的可缓存文件)缓存1个月

  【对某些文件类型禁止使用缓存】

  网站有很多动态文件是不可以让浏览器缓存的,这样,我们就需要限定禁止缓存的文件。

  代码如下:

Header unset Cache-Control

  【允许访问与阻止IP访问】

  你可以使用以下命令封禁一个IP地址,对于医疗行业来说,恶意点击的竞价推广及商务通的代码就可以使用这个来阻止竞争对手了。

  代码如下:

  deny from 000.000.000.000

  这里的000.000.000.000是被封禁的IP地址,如果你只指明了其中的几个,则可以封禁整个网段的地址。如你输入210.10.56.*,则将封禁210.10.56.0~210.10.56.255的所有IP地址。

  你也可以使用以下命令允许一个IP地址访问网站。

  代码如下:

  allow from 000.000.000.000

  被允许的IP地址则为000.000.000.000,你可以象封禁IP地址一样封禁整个网段。

  如果你想阻止所有人访问该目录,则可以这样。

  代码如下:

  deny from all

  需要注意的是,不过这并不影响脚本程序使用这个目录下的文档,只是禁止用户访问(或许会有人想到用它来只允许蜘蛛访问吧)。

  【图片防盗链】

  下面的htaccess代码能够提高你的web服务器的安全水平。图片链接盗用保护非常有用,它能防止其他人偷盗使用你的服务器上的图片资源。

  代码如下:

  RewriteBase /

  RewriteCond %{HTTP_REFERER} !^$

  RewriteCond %{HTTP_REFERER} !^http://(www.)?aqee.net/.*$ [NC]

  RewriteRule .(gif|jpg|swf|flv|png)$ /feed/ [R=302,L]

  【防黑客进攻漏洞】

  如果你想提高网站的安全等级,你可以去掉下面的几行代码,这样可以防止一些常见恶意URL匹配的黑客攻击技术。对于医疗网站来说,竞争对手攻击商务通 的弹窗代码导致一段时间内爆发出成千上万的对话是非常难以防范和应对的,所以我们可以使用.htaccess来保护我们的商务通。

  代码如下:

  RewriteEngine On

  # proc/self/environ? 没门!

  RewriteCond %{QUERY_STRING} proc/self/environ [OR]

  # 阻止脚本企图通过URL修改mosConfig值

  RewriteCond %{QUERY_STRING} mosConfig_[a-zA-Z_]{1,21}(=|\=)[OR]

  # 阻止脚本通过URL传递的base64_encode垃圾信息

  RewriteCond %{QUERY_STRING} base64_encode.*(.*) [OR]

  # 阻止在URL含有