摘要:htaccess文件是Apache中的配置文件,用来对特定网站目录的配置,利用htaccess文件,可以实现自定义404错误页面、301重定向以及URL重写等功能。本文就在PHP开发中对htaccess文件的用法进行详细的总结。

1. 时区设置

有些时候,当你在PHP里使用date或mktime函数时,由于时区的不同,它会显示出一些很奇怪的信息。下面是解决这个问题的方法之一。就是设置你的服务器的时区。你可以在这里找到所有支持的时区的清单。

1 SetEnv TZ Australia/Melbourne

2. 搜索引擎友好的301永久转向方法

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

3. 屏蔽下载对话框

通常,当你下载东西的时候,你会看到一个对话框询问你是保持这个文件还是直接打开它。如果你不想看到这个东西,你可以把下面的一段代码放到你的.htaccess文件里。

1 AddType application/octet-stream .pdf 
2 AddType application/octet-stream .zip 
3 AddType application/octet-stream .mov

4. 省去www前缀

SEO的一个原则是,确保你的网站只有一个URL。因此,你需要把所有的通过www的访问转向的非www,或者反这来。

1 RewriteEngine On 
2 RewriteBase / 
3 RewriteCond %{HTTP_HOST} ^www.aqee.net [NC] 
4 RewriteRule ^(.*)$ http://aqee.net/$1 [L,R=301]

5. 个性化Error页面

对每个错误代码定制自己个性化的错误页面。

1 ErrorDocument 401 /error/401.php 
2 ErrorDocument 403 /error/403.php 
3 ErrorDocument 404 /error/404.php 
4 ErrorDocument 500 /error/500.php

6. 压缩文件

通过压缩你的文件体积来优化网站的访问速度。

01 # 压缩 text, html, javascript, css, xml: 
02 AddOutputFilterByType DEFLATE text/plain 
03 AddOutputFilterByType DEFLATE text/html 
04 AddOutputFilterByType DEFLATE text/xml 
05 AddOutputFilterByType DEFLATE text/css 
06 AddOutputFilterByType DEFLATE application/xml 
07 AddOutputFilterByType DEFLATE application/xhtml+xml 
08 AddOutputFilterByType DEFLATE application/rss+xml 
09 AddOutputFilterByType DEFLATE application/javascript 
10 AddOutputFilterByType DEFLATE application/x-javascript

7. 缓存文件

缓存文件是另外一个提高你的网站访问速度的好方法。

1 <FilesMatch “.(flv|gif|jpg|jpeg|png|ico|swf|js|css|pdf)$”> 
2 Header set <span><a href="http://web.itivy.com/tag/cache/" target="_blank">Cache</a></span>-Control “max-age=2592000″ 
3 </FilesMatch>

8. 对某些文件类型禁止使用缓存

而另一方面,你也可以定制对某些文件类型禁止使用缓存。

1 # 显式的规定对脚本和其它动态文件禁止使用缓存 
2 <FilesMatch “.(pl|php|cgi|spl|scgi|fcgi)$”> 
3 Header unset Cache-Control 
4 </FilesMatch>

安全问题

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

1. 通过.htaccess放盗链

痛恨那些偷盗链接你的web服务器上的图片资源而耗尽了你的带宽的行为吗?试试这个,你可以防止这种事情的发生。

1 RewriteBase / 
2 RewriteCond %{HTTP_REFERER} !^$ 
3 RewriteCond %{HTTP_REFERER} !^http://(www.)?aqee.net/.*$ [NC] 
4 RewriteRule .(gif|jpg|swf|flv|png)$ /feed/ [R=302,L]

2. 防黑客

如果你想提高网站的安全等级,你可以去掉下面的几行代码,这样可以防止一些常见恶意URL匹配的黑客攻击技术。

01 RewriteEngine On 
02   
03 # proc/self/environ? 没门! 
04 RewriteCond %{QUERY_STRING} proc/self/environ [OR] 
05   
06 # 阻止脚本企图通过URL修改mosConfig值 
07 RewriteCond %{QUERY_STRING} mosConfig_[a-zA-Z_]{1,21}(=|\%3D) [OR] 
08   
09 # 阻止脚本通过URL传递的base64_encode垃圾信息 
10 RewriteCond %{QUERY_STRING} base64_encode.*(.*) [OR] 
11   
12 # 阻止在URL含有<script>标记的脚本 
13 RewriteCond %{QUERY_STRING} (<|%3C).*script.*(>|%3E) [NC,OR] 
14   
15 # 阻止企图通过URL设置PHP的GLOBALS变量的脚本 
16 RewriteCond %{QUERY_STRING} GLOBALS(=|[|\%[0-9A-Z]{0,2}) [OR] 
17   
18 # 阻止企图通过URL设置PHP的_REQUEST变量的脚本 
19 RewriteCond %{QUERY_STRING} _REQUEST(=|[|\%[0-9A-Z]{0,2}) 
20   
21 # 把所有被阻止的请求转向到403禁止提示页面! 
22 RewriteRule ^(.*)$ index.php [F,L]

3. 阻止访问你的 .htaccess 文件

下面的代码可以阻止别人访问你的.htaccess文件。同样,你也可以设定阻止多种文件类型。

01 # 保护你的 htaccess 文件 
02 <Files .htaccess> 
03 order allow,deny 
04 deny from all 
05 </Files> 
06   
07 # 阻止查看指定的文件 
08 <Files secretfile.jpg> 
09  order allow,deny 
10  deny from all 
11 </Files> 
12   
13 # 多种文件类型 
14 <FilesMatch “.(htaccess|htpasswd|ini|phps|fla|psd|log|sh)$”> 
15  Order Allow,Deny 
16  Deny from all 
17 </FilesMatch>

4. 重命名 htaccess 文件

你可以通过重命名htaccess文件来对其进行保护。

1 AccessFileName htacc.ess

5. 禁止目录浏览

禁止服务器对外显示目录结构,反之亦然。

1 # 禁止目录浏览 
2 Options All -Indexes 
3   
4 # 开放目录浏览
5 Options All +Indexes

6. 改变缺省的Index页面

你可以把缺省的 index.html, index.php 或 index.htm 改成其它页面。

1 DirectoryIndex business.html

7. 通过引用信息来阻止某些不欢迎的浏览者

1 # 阻止来自某网站的用户 
2 <IfModule mod_rewrite.c> 
3  RewriteEngine on 
4  RewriteCond %{HTTP_REFERER} scumbag.com [NC,OR] 
5  RewriteCond %{HTTP_REFERER} wormhole.com [NC,OR] 
6  RewriteRule .* - [F] 
7    
8 </ifModule>

8. 通过判断浏览器头信息来阻止某些请求

这个方法可以通过阻止某些机器人或蜘蛛爬虫抓取你的网站来节省你的带宽流量。

1 # 阻止来自某些特定网站的用户 
2 <IfModule mod_rewrite.c> 
3 SetEnvIfNoCase ^User-Agent$ .*(craftbot|download|extract|stripper|sucker|ninja|clshttp|webspider
4 |leacher|collector|grabber|webpictures) HTTP_SAFE_BADBOT 
5 SetEnvIfNoCase ^User-Agent$ .*(libwww-perl|aesop_com_spiderman) HTTP_SAFE_BADBOT 
6 Deny from env=HTTP_SAFE_BADBOT 
7 </ifModule>

9. 禁止脚本执行,加强你的目录安全

1 # 禁止某些目录里的脚本执行权限 
2 AddHandler cgi-script .php .pl .py .<span><a href="http://web.itivy.com/cat/jsp/" target="_blank">JSP</a></span> .asp .htm .shtml .sh .cgi 
3 Options -ExecCGI

原文链接

PHP开发中htaccess文件用法大全
标签: