今天在《外刊IT评论》上看见了关于.htaccess的使用总结,觉得很不错的,因为wp博客还有其他的php的web服务站点好多都是用.htaccess来管理比如效率以及安全的问题,有必要来学习一下。

1.时区设置

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

  1. SetEnv?TZ?Australia/Melbourne

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

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

  1. Redirect?301?http://www.aqee.net/home?http://www.aqee.net/

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. 压缩文件

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

  1. #?压缩?text,?html,?javascript,?css,?xml:
  2. AddOutputFilterByType?DEFLATE?text/plain
  3. AddOutputFilterByType?DEFLATE?text/html
  4. AddOutputFilterByType?DEFLATE?text/xml
  5. AddOutputFilterByType?DEFLATE?text/css
  6. AddOutputFilterByType?DEFLATE?application/xml
  7. AddOutputFilterByType?DEFLATE?application/xhtml+xml
  8. AddOutputFilterByType?DEFLATE?application/rss+xml
  9. 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?Cache-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匹配的黑客攻击技术。

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

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

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

  1. #?保护你的?htaccess?文件
  2. <Files?.htaccess>
  3. order?allow,deny
  4. deny?from?all
  5. </Files>
  6. #?阻止查看指定的文件
  7. <Files?secretfile.jpg>
  8. order?allow,deny
  9. deny?from?all
  10. </Files>
  11. #?多种文件类型
  12. <FilesMatch?“.(htaccess|htpasswd|ini|phps|fla|psd|log|sh)$”>
  13. Order?Allow,Deny
  14. Deny?from?all
  15. </FilesMatch>

4. 重命名 htaccess 文件

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

  1. AccessFileName?htacc.ess

5. 禁止目录浏览

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

  1. #?禁止目录浏览
  2. Options?All?-Indexes
  3. #?开放目录浏览
  4. 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. </ifModule>

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

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

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

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

    1. #?禁止某些目录里的脚本执行权限
    2. AddHandler?cgi-script?.php?.pl?.py?.jsp?.asp?.htm?.shtml?.sh?.cgi
    3. Options?-ExecCGI

.htaccess重写、安全防护、文件访问权限的更多相关文章

  1. C#更改文件访问权限所有者(适用于各个Windows版本)

    前面也提到了,前段时间在做Online Judge系统,在正式上线前有几个比较老的版本,其中第一个版本使用ACL来控制权限以确保安全(但是这个版本完全建立在IIS上,所以这样做是没效果的),遇到了一些 ...

  2. Linux下进程的文件访问权限

    本文转自 http://blog.csdn.net/chosen0ne/article/details/10581883 对进程校验文件访问权限包括两个部分,一是确定进程的角色(属于哪个用户或者组), ...

  3. 《UNIX环境高级编程》笔记--文件访问权限和新文件、目录所有权

    1.与进程关联的用户ID和组ID 与一个进程关联的ID有一下几个: 实际用户ID和实际组ID标识我们究竟是谁.通常在一个会话间值是不会改变的,但是超级用户进程有方法改变 他们,在以后的进程控制中会进行 ...

  4. linux文件访问权限(像rw-r--rw-是什么意思)

    Linux的文件访问权限分为 读.写.执行三种 r:可读(4) w:可写(2)对目录来说则可新建文件 x:可执行(1)对目录来说则可进入该目录 可用 ls -l 查看文件 像上图的-rw-r--rw- ...

  5. 文件访问权限:更改用户ID

    本文来探讨一下通过更改用户ID来获取合适的文件访问权限.由于更改组ID的规则与用户ID相同,我们在这里只探讨用户ID. 纸上得来终觉浅 先了解以下几个基本知识: 用户ID包括:实际用户ID.有效用户I ...

  6. 用户id,组id和文件访问权限

    实际用户ID和实际组ID:标示了我们究竟是谁,这两个字段在登录时取自口令文件中的登录项 有效用户ID和有效组ID以及附属组ID:决定了我们的文件的访问权限(通常有效用户ID等于实际用户ID,有效组ID ...

  7. Linux中ls -l(ll)返回结果中的文件访问权限-rw-r--rw-

    linux文件访问权限(像rw-r--rw-是什么意思)   Linux的文件访问权限分为 读.写.执行三种 r:可读(4) w:可写(2)对目录来说则可新建文件 x:可执行(1)对目录来说则可进入该 ...

  8. UNIX环境编程学习笔记(9)——文件I/O之文件访问权限的屏蔽和更改

    lienhua342014-09-10 1 文件访问权限 在文件访问权限和进程访问控制中,我们已经讲述过文件访问权限位,为了方便,我们重新列在下面, 表 1: 文件的 9 个访问权限位  st_mod ...

  9. UNIX环境编程学习笔记(7)——文件I/O之文件访问权限与进程访问控制

    lienhua342014-09-02 1 文件的设置用户 ID位 和设置组 ID位 与进程相关联的 ID 如下表所示, 表 1: 与进程相关联的用户 ID 和组 ID 实际用户 ID 我们实际上是谁 ...

  10. [Z] Linux下进程的文件访问权限

    原文链接:http://blog.csdn.net/chosen0ne/article/details/10581883 对进程校验文件访问权限包括两个部分,一是确定进程的角色(属于哪个用户或者组), ...

随机推荐

  1. el-select,选择一行,取值行的对象.

      <el-select v-model="set_invoice_form.InvoiceType" placeholder="请选择" :disabl ...

  2. EventBus 报“Subscriber class already registered to event class”错误

    这句子的话意思也很容易理解,“接收者类已经被注册为事件类了”. 之前我是这么写: 事件注册是写在onStart()里面的 @Override protected void onStart() { su ...

  3. UI常用字体定义和继承的实例,ResearchKitCode

    #import <UIKit/UIKit.h> @interface UIFont (APCAppearance) + (UIFont*) appRegularFontWithSize: ...

  4. 分类IP地址(A、B、C类)的指派范围、一般不使用的特殊IP地址

    分类IP地址(A.B.C类)的指派范围.一般不使用的特殊IP地址 A类地址:0开头,8位网络号 B类地址:10开头,16位网络号 C类地址:110开头,24位网络号 D类地址:1110开头,多播地址 ...

  5. (转)SpringMVC学习(九)——SpringMVC中实现文件上传

    http://blog.csdn.net/yerenyuan_pku/article/details/72511975 这一篇博文主要来总结下SpringMVC中实现文件上传的步骤.但这里我只讲单个文 ...

  6. Python3简明教程(九)—— 文件处理

    文件是保存在计算机存储设备上的一些信息或数据.你已经知道了一些不同的文件类型,比如你的音乐文件,视频文件,文本文件.Linux 有一个思想是“一切皆文件”,这在实验最后的 lscpu 的实现中得到了体 ...

  7. Spring自动注入的几种方式

    ---恢复内容开始---   @Service("accountEmailService")public class AccountEmailServiceImpl impleme ...

  8. 暑假集训 || 树DP

    树上DP通常用到dfs https://www.cnblogs.com/mhpp/p/6628548.html POJ 2342 相邻两点不能同时被选 经典题 f[0][u]表示不选u的情况数,此时v ...

  9. hibernate5.x版本org.hibernate.MappingException: Unknown entity问题

    /* * //创建hibernate配置对象 Configuration cfg = new Configuration(); cfg.configure("hibernate.cfg.xm ...

  10. 弹跳加载动画特效Bouncing loader

    一款非常常用的css 加载动画,这款CSS3 Loading动画主要由几个小球通过规律的上下跳动,渐隐渐显而成,效果十分生动.流畅.兼容IE8以上,尤其适合在移动端中使用,基本代替了图片实现加载的效果 ...