既然是技术人员,那么实际的代码是必不可少的。鉴于目前很多的站点大多数使用的都是以PHP+MYSQL为主流的网站程序,那么网站的配置文件是必须受到我们格外重视的。这里分享一下在Apche下通用的一些htaccess配置技巧,IIS7的请绕道。
一、301永久重定向
对于301重定向的重要性以及实现方法网上有很多教程,还不会设置的朋友可参考《301重定向设置方法图文教程》一文详细配置步骤。
二、通过 .htaccess 实现缓存策略,给Apche下的网站加速
在.htaccess文件中添加以下语句:
其中:text/css之类代表文件类型,A2592000表示在浏览器中的缓存时间,2592000秒=30天
记得谷歌有个网站速度评级,在其中对浏览器的缓存时间也是其中一项,很多人不知道怎么做,下面的就是Apahce下的做法:
IfModule mod_expires.cExpiresActive OnExpiresDefault A600ExpiresByTypeimage/x-icon A2592000ExpiresByType application/x-javascriptA2592000ExpiresByType text/css A604800ExpiresByType image/gifA2592000ExpiresByType image/png A2592000ExpiresByType image/jpegA2592000ExpiresByType text/plain A86400ExpiresByTypeapplication/x-shockwave-flash A2592000ExpiresByType video/x-flvA2592000ExpiresByType application/pdf A2592000ExpiresByType text/htmlA600/IfModule
三、自定义Error页面
部分主机仅能在后台设置404Error等404页面自定义,使用.htaccess文件可以对每个错误代码自定义404错误页面。
代码如下:
ErrorDocument 401 /error/401.phpErrorDocument 403 /error/403.phpErrorDocument 404 /error/404.phpErrorDocument 500 /error/500.php
四、开启Gzip压缩
通过压缩你网站上的静态资源及其他文件的体积是节省流量和提高速度所必须的,它可以通过压缩text, html, javascript, css, xml等文件。在.htaccess文件中添加以下语句:
ifmodule mod_deflate.cAddOutputFilter DEFLATE html xml php js css/ifmodule
五、关闭ETag
如果没有使用ETag提供的灵活的验证模式,那么把所有的ETag都去掉会更好,只需在.htaccess文件中添加以下语句:
FileETag none
六、设置 Cookie
通过环境变量来设置 Cookie
Header set Set-Cookie “language=%{lang}e; path=/;” env=lang
基于请求设置 Cookie,该代码发送 Set-Cookie 头用于设置 Cookie 值为第二个括号里的匹配项
RewriteEngine OnRewriteBase /
RewriteRule ^(.*)(de|es|fr|it|ja|ru|en)/$ – [co=lang:$2:.yourserver.com:7200:/]
七:利用.htacess文件配置静态文件缓存
FilesMatch .(flv|gif|jpg|jpeg|png|ico|swf|js|css|txt|pdf)$ Header set Cache-Control max-age=259200/FilesMatch
先看FilesMatch,这后面的flv|gif|jpg|jpeg|png|ico等等就是静态文件的类型。比如图片格式一般都是.gif/jpg。javascript的格式就是js。样式表的格式是、css。想缓存哪些静态文件,就在后面写上静态文件的扩展名。
第二个是Header set Cache-Control 段话的意思是:设置头部的缓存值。关于Cache-Control就是控制缓存的。把Cache-Control的值设置成 max-age,就是给静态文件设置缓存的有效时间。当过了缓存时间,那么访问网站时,重新从服务器调用。如果在缓存有效时间内,使用的是缓存到本地的静态文件。其中max-age=259200就是3天的时间。max-age单位为秒。
八.虚拟主机利用.htaccess绑定子目录
相信很多人都遇到过,PHP虚拟主机、无绑定子目录功能,但是在网站根目录弄了个例如bbs的文件夹用来存放论坛,然后希望通过例如“http://bbs.hnol.org”的二级域名就能够访问。如果您的虚拟主机支持.htaccess,您可以使用下面的方法实现这个功能(如果虚拟主机有绑定子目录功能,可以不用看): 首先,解析一个例如“bbs.hnol.org”的域名到您的虚拟主机,保证访问这个域名可以打开您的网站。 然后,打开网站根目录的.htaccess文件,加入下面的代码:
RewriteEngine on# 把 bbs.hnol.org改为你要绑定的域名.RewriteCond %{HTTP_HOST} ^(www.)?bbs.hnol.org$# 把 bbs改为要绑定的目录.RewriteCond %{REQUEST_URI} !^/bbs/# 不要改以下两行.RewriteCond %{REQUEST_FILENAME} !-fRewriteCond %{REQUEST_FILENAME} !-d# 把 bbs改为要绑定的目录.RewriteRule ^(.*)$ /bbs/$1# 把 bbs.hnol.org改为你要绑定的域名# 把 bbs 改为要绑定的目录.# bbs/ 后面是首页文件index.php, index.html……RewriteCond %{HTTP_HOST} ^(www.)?bbs.hnol.org$RewriteRule ^(/)?$ bbs/index.php [L]
如果你想绑定多个子目录,使用不同的二级域名进行访问,直接复制上面的代码,把bbs改成您的目录,域名改成您的网站的对应二级子域名即可。
九、通过.htaccess文件防图片盗链:
如果你网站上的一个图片被别的N多的网站引用了,那么,这很有可能会导致你服务器的性能下降,使用下面的代码可以保护某些热门的链接不被过多的引用。
Files ~ “^.(htaccess|htpasswd)$”
deny from all /Files
order deny,allow
RewriteEngine on
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://(www.)?hnol.org(/)?.*$ [NC]
RewriteCond %{HTTP_REFERER} !^http://(www.)?wugongqi.cn(/)?.*$ [NC]
RewriteCond %{HTTP_REFERER} !^http://(www.)?domain.com(/)?.*$ [NC]
上面代码中的“hnol.org”“wugongqi.cn”“domain.com”表示是允许访问防止采集的图片的域名。这里面站长朋友参照代 码,自行设置。例如想让yahoo、soso、sogou等搜索引擎正常访问的话复制”RewriteCond %{HTTP_REFERER} !^http://(www.)?domain.com(/)?.*$ [NC]“这段代码,替换到当中的domain.com。另外还有一个很重要的地方,就是别忘了加上自己的域名。方法也是同上,替换代码中的 domain.com即可。
设置好了后,我们接下来就要考虑替换图片了。为什么要替换图片呢?当我们设置了图片文件防采集,但是内容被采集后,我们要让图片显示成的替换图片。虽然这段文字有点拗口,但相信从事站长行业的朋友,这点理解能力还是具备的。代码如下:
RewriteRule .*.(gif|jpg|jpeg|bmp|png)$ http://www.softhome.cc/html/photo.jpg [L]
上面的代码的替换成替换图片的正确路径即可。这里同样需要注意,替换图片万万不可是你当前域名内的文件!建议弄成别的网站的图片。如果设置成自己域名内的图片的话,将会造成死循环。这点请站长朋友们务必记住。
综上所述,贴出完美代码,请各位参照一下。
Files ~ “^.(htaccess|htpasswd)$”
deny from all
/Files
order deny,allow
RewriteEngine on
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://(www.)?baidu.com(/)?.*$ [NC]
RewriteCond %{HTTP_REFERER} !^http://(www.)?google.com(/)?.*$ [NC]
RewriteCond %{HTTP_REFERER} !^http://(www.)?yahoo.com(/)?.*$ [NC]
RewriteCond %{HTTP_REFERER} !^http://(www.)?soso.com(/)?.*$ [NC]
RewriteCond %{HTTP_REFERER} !^http://(www.)?sogou.com(/)?.*$ [NC]
RewriteCond %{HTTP_REFERER} !^http://(www.)?360.cn(/)?.*$ [NC]
RewriteCond %{HTTP_REFERER} !^http://(www.)?yilulu.cn(/)?.*$ [NC]
RewriteRule .*.(gif|jpg|jpeg|bmp|png)$http://www.softhome.cc/html/photo.jpg [L]
将以上代码复制粘贴到.htaccess文件里的 节点内,一切over。
请注意以下几点:
1、替换图片建议弄成别的网站的图片。如果设置成自己域名内的图片的话,将会造成死循环;
2、无法保存为.htaccess文件时可以通过FTP上传到网站的根目录后,再将文件命名为.htaccess。
3、 最后一行的[L]要与前面有空格隔开。
10、虚拟主机通过修改.htaccess来屏蔽IP
如果要屏蔽某一特定IP可以使用:
orderallow,denydenyfrom192.168.0.1allowfromall
如果想要屏蔽多个IP地址,只需多加几个deny from 即可
orderallow,denydenyfrom192.168.0.2denyfrom192.168.0.3denyfrom192.168.0.4allowfromall
如果需要屏蔽整个IP段,可以使用
orderallow,denydenyfrom192.168.0allowfromall
如果只想屏蔽IP段中的一小部分IP,则可使用
orderallow,denydenyfrom192.168.0.100/200allowfromall
如果你想让部分IP访问你的网站,只需修改allow from即可。
优化版htaccess文件:
下面的这个优化版的.htaccess文件来自HTML5 ★ BOILERPLATE,这个框架非常知名,拥有很多知名的客户使用,所以不用怀疑这个文件的质量。连WordPress的官方插件库中,也有很多优化类和安全类的插件使用的就是这个文件。
该文件内有详细的注释说明,大家可以把自己不需要的功能注释掉,另外,这个文件是通用的,不仅仅适用于WordPress。
下载优化版htaccess文件 | 来自奇芳阁