- A+
在使用Linux主机中,一般使用的环境都是Apache+PHP+Mysql 来使用,其实跟你使用PHP、Mysql没有什么关系。
关键在于Apache的设置,一般来说只要 httpd.conf 设置好了 ?.htaccess 就能正常使用了。
一般来讲我们网站的图片文件(jpg,png,gif等)、样式文件(css)、脚本文件(js) 这些是不会经常更改的,那么我们也没有必要让用户打开浏览器每次都重新读取这些文件。不设置缓存会有以下几点劣势
- 浪费带宽流量
- 不利于用户体验
- 还有个更重要的是搜索引擎对你网站的友好性。网站响应速度快的,往往更能获得搜索引擎的喜爱。
在.htaccess添加如下设置即可完成浏览器的缓存
- <IfModule?mod_expires.c>
- ExpiresActive?On
- ExpiresDefault?A600
- ExpiresByType?image/x-icon?A2592000
- ExpiresByType?application/x-javascript?A2592000
- ExpiresByType?text/css?A604800
- ExpiresByType?image/gif?A2592000
- ExpiresByType?image/png?A2592000
- ExpiresByType?image/jpeg?A2592000
- ExpiresByType?text/plain?A86400
- ExpiresByType?application/x-shockwave-flash?A2592000
- ExpiresByType?video/x-flv?A2592000
- ExpiresByType?application/pdf?A2592000
- ExpiresByType?text/html?A600
- </IfModule>
缓存时间,这里设置A2592000表示在浏览器中的缓存时间,2592000秒=30天。
如何使用.htaccess开启Gzip压缩
我们需要在用户访问的时候压缩文件流进行传输,这样可以以较小的文件流传输到用户的浏览器,从而也提高了浏览响应速度及降低了带宽流量,我们使用如下设置即可,在.htaccess添加如下设置即可完成Gzip的压缩。
- <ifmodule?mod_deflate.c>
- AddOutputFilter?DEFLATE?html?xml?php?js?css
- </ifmodule>
使用.htaccess关闭FileETag,优化响应头文件
如果你对响应头文件不是很了解,也没有用到头文件验证等方法,那么你可以直接进行关闭设置,来提高响应的速度。在.htaccess进行如下设置来关闭 FileETag 。
- FileETag?none
经过了这些优化,想必网站速度会快了许多。
拓展:.htaccess重定向和url重写
一个简单的重定向
- Redirect?301?^old.html$?http://localhost/new.html
这是设置一个http状态码为301(永久移动)并把所有访问old.html转向到new.html。使用了正则表达式来匹配访问的页面,后面的url必须是完整路径。
?
Url重写
- RewriteEngine?on
- RewriteRule?^old.html$?new.html
第一行打开重写引擎
第二行是重写规则。这样用户访问old.html时实际却是访问的new.html,而且用户对此好吧知情。因为地址栏里依旧显示是old.html。
为了在地址栏显示新的访问地址,我们可以加个f标志在rewriterule语句里。
- RewriteRule?^old.html$?http://hostname/new.html?[r=301]
下面是把带查询参数的url重写成对搜索引擎友好的url
- RewriteRule?^products/([^/]+)/([^/]+)/([^/]+)?product.php?cat=$1&brand=$2&prod=$3
这条规则允许访问者以类似这样的
- url?products/turntables/technics/sl1210,
- 来访问
- product.php?cat=turntables&brand=technics&prod=sl1210.
括号里为一个单元,分别对应后面的$1,$2,$3。[^/]+ 在原括号里表示除了/之外的任何一个或是多个字符。
自定义错误页面
- ErrorDocument?404"/404.html"
这是定义404页面无法找到的错误,也可以定义其他错误代码的页面。
限定访问特点资源
- <Files"protectedfile.html">
- AuthName"Username?and?password?required"
- AuthUserFile/path/to/.htpasswd
- Require?valid-user
- AuthType?Basic
- </Files>
保护protectedfile.html,authName是登陆框的提示信息,authuserfile是.htpasswd文件的路径
阻止某些ip访问
- order?allow,deny
- deny?from?192.168.0.1
- allow?from?allOrder
告诉apache指令的顺序。这里的这个是先允许后拒绝的。虽然allow from all后出现但是还是在前面生效。拒绝了192.168.0.1的访问。也可以按段来屏蔽访问的,只要只指定前面的几段就可以类似,比如192.168.