今天在《外刊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. pre-network android 网络优化预加载框架

    网络优化是所有app开发中非常重要的一部分,如果将网络请求前置就是在点击跳转activity之前开始网络加载那么速度将会有质的提升.也就是网络预先加载框框架. 网络预加载框架,监听式网络前置加载框架- ...

  2. (2)Ngixn 编译安装设置开机自启

    设置nginx开机自启 #!/bin/sh # # nginx - this script starts and stops the nginx daemon # # chkconfig: - 85 ...

  3. 响应式布局(CSS3弹性盒flex布局模型)

    传统的布局方式都是基于盒模型的 利用display.position.float来布局有一定局限性 比如说实现自适应垂直居中 随着响应式布局的流行,CSS3引入了更加灵活的弹性布局模型 flex弹性布 ...

  4. 约瑟夫环(java)

    问题描述:n个人围成一圈,每隔k个杀死一个,问最后的幸存者的编号 假设标号是0 ~ n-1,幸存者是f[n] 1.特殊情况:f[1]=0 2.一般情况:f[n] = (f[n-1]+k)%n 游戏开始 ...

  5. 出现了错误。详细消息: 3 uncommitted changes would be overwritten by merge

    merge manual中有一条警告: 出现了错误.详细消息: 3 uncommitted changes would be overwritten by merge 有未提交修改情况下,不要执行me ...

  6. Ext 6.5.3 classic版本,自定义实现togglefield开关控件

    1,在Ext 6.5.3的classic版中没有提供开关控件,参照modern版中 togglefield开关的实现,继承滑动器(sliderfield),自定义一个开关按钮.支持value绑定和点击 ...

  7. 约束RMQ

    不知道为什么网上找不到太多相关的资料,所以写一个小总结,并附有能用的代码,抛砖引玉. 约束RMQ,就是RMQ区间必须满足两项之差最大为1,采用ST表的话,这时候有O(n)建表,O(1)查询的优秀复杂度 ...

  8. C#对象初始化的探讨

    最近在弄MQ的性能监测数据埋点,无疑中用到一个Nstatsd的客户端,看到里面写过里面一种嵌套类的写法.代码如下: 客户端Client是一个密封的类,并且构造函数私有访问.然后又用一个嵌套类Curre ...

  9. 我的java web之路(JSP基本语法)

    1.JSP注释 1.1输出注释 语法格式  <!--comment [<%= expression %>] --> <body> This is my JSP pa ...

  10. LeetCode(26) Remove Duplicates from Sorted Array

    题目 Given a sorted array, remove the duplicates in place such that each element appear only once and ...