.htaccess重写、安全防护、文件访问权限
今天在《外刊IT评论》上看见了关于.htaccess的使用总结,觉得很不错的,因为wp博客还有其他的php的web服务站点好多都是用.htaccess来管理比如效率以及安全的问题,有必要来学习一下。
1.时区设置
有些时候,当你在PHP里使用date或mktime函数时,由于时区的不同,它会显示出一些很奇怪的信息。下面是解决这个问题的方法之一。就是设置你的服务器的时区。你可以在这里找到所有支持的时区的清单。
- SetEnv?TZ?Australia/Melbourne
2. 搜索引擎友好的301永久转向方法
为什么这是搜索引擎友好的呢?因为现在很多现代的搜索引擎都有能根据检查301永久转向来更新它现有的记录的功能。
- Redirect?301?http://www.aqee.net/home?http://www.aqee.net/
3. 屏蔽下载对话框
通常,当你下载东西的时候,你会看到一个对话框询问你是保持这个文件还是直接打开它。如果你不想看到这个东西,你可以把下面的一段代码放到你的.htaccess文件里。
- AddType?application/octet-stream?.pdf
- AddType?application/octet-stream?.zip
- AddType?application/octet-stream?.mov
4. 省去www前缀
SEO的一个原则是,确保你的网站只有一个URL。因此,你需要把所有的通过www的访问转向的非www,或者反这来。
- RewriteEngine?On
- RewriteBase?/
- RewriteCond?%{HTTP_HOST}?^www.aqee.net?[NC]
- RewriteRule?^(.*)$?http://aqee.net/$1?[L,R=301]
5. 个性化Error页面
对每个错误代码定制自己个性化的错误页面。
- ErrorDocument?401?/error/401.php
- ErrorDocument?403?/error/403.php
- ErrorDocument?404?/error/404.php
- ErrorDocument?500?/error/500.php
6. 压缩文件
通过压缩你的文件体积来优化网站的访问速度。
- #?压缩?text,?html,?javascript,?css,?xml:
- AddOutputFilterByType?DEFLATE?text/plain
- AddOutputFilterByType?DEFLATE?text/html
- AddOutputFilterByType?DEFLATE?text/xml
- AddOutputFilterByType?DEFLATE?text/css
- AddOutputFilterByType?DEFLATE?application/xml
- AddOutputFilterByType?DEFLATE?application/xhtml+xml
- AddOutputFilterByType?DEFLATE?application/rss+xml
- AddOutputFilterByType?DEFLATE?application/javascript
- AddOutputFilterByType?DEFLATE?application/x-javascript
7. 缓存文件
缓存文件是另外一个提高你的网站访问速度的好方法。
- <FilesMatch?“.(flv|gif|jpg|jpeg|png|ico|swf|js|css|pdf)$”>
- Header?set?Cache-Control?“max-age=2592000″
- </FilesMatch>
8. 对某些文件类型禁止使用缓存
而另一方面,你也可以定制对某些文件类型禁止使用缓存。
- #?显式的规定对脚本和其它动态文件禁止使用缓存
- <FilesMatch?“.(pl|php|cgi|spl|scgi|fcgi)$”>
- Header?unset?Cache-Control
- </FilesMatch>
安全问题
下面的htaccess代码能够提高你的web服务器的安全水平。图片链接盗用保护非常有用,它能防止其他人偷盗使用你的服务器上的图片资源。
1. 通过.htaccess放盗链
痛恨那些偷盗链接你的web服务器上的图片资源而耗尽了你的带宽的行为吗?试试这个,你可以防止这种事情的发生。
- RewriteBase?/
- RewriteCond?%{HTTP_REFERER}?!^$
- RewriteCond?%{HTTP_REFERER}?!^http://(www.)?aqee.net/.*$?[NC]
- RewriteRule?.(gif|jpg|swf|flv|png)$?/feed/?[R=302,L]
2. 防黑客
如果你想提高网站的安全等级,你可以去掉下面的几行代码,这样可以防止一些常见恶意URL匹配的黑客攻击技术。
- RewriteEngine?On
- #?proc/self/environ??没门!
- RewriteCond?%{QUERY_STRING}?proc/self/environ?[OR]
- #?阻止脚本企图通过URL修改mosConfig值
- RewriteCond?%{QUERY_STRING}?mosConfig_[a-zA-Z_]{1,21}(=|\%3D)?[OR]
- #?阻止脚本通过URL传递的base64_encode垃圾信息
- RewriteCond?%{QUERY_STRING}?base64_encode.*(.*)?[OR]
- #?阻止在URL含有<script>标记的脚本
- RewriteCond?%{QUERY_STRING}?(<|%3C).*script.*(>|%3E)?[NC,OR]
- #?阻止企图通过URL设置PHP的GLOBALS变量的脚本
- RewriteCond?%{QUERY_STRING}?GLOBALS(=|[|\%[0-9A-Z]{0,2})?[OR]
- #?阻止企图通过URL设置PHP的_REQUEST变量的脚本
- RewriteCond?%{QUERY_STRING}?_REQUEST(=|[|\%[0-9A-Z]{0,2})
- #?把所有被阻止的请求转向到403禁止提示页面!
- RewriteRule?^(.*)$?index.php?[F,L]
3. 阻止访问你的 .htaccess 文件
下面的代码可以阻止别人访问你的.htaccess文件。同样,你也可以设定阻止多种文件类型。
- #?保护你的?htaccess?文件
- <Files?.htaccess>
- order?allow,deny
- deny?from?all
- </Files>
- #?阻止查看指定的文件
- <Files?secretfile.jpg>
- order?allow,deny
- deny?from?all
- </Files>
- #?多种文件类型
- <FilesMatch?“.(htaccess|htpasswd|ini|phps|fla|psd|log|sh)$”>
- Order?Allow,Deny
- Deny?from?all
- </FilesMatch>
4. 重命名 htaccess 文件
你可以通过重命名htaccess文件来对其进行保护。
- AccessFileName?htacc.ess
5. 禁止目录浏览
禁止服务器对外显示目录结构,反之亦然。
- #?禁止目录浏览
- Options?All?-Indexes
- #?开放目录浏览
- Options?All?+Indexes
6. 改变缺省的Index页面
你可以把缺省的 index.html, index.php 或 index.htm 改成其它页面。
- DirectoryIndex?business.html
7. 通过引用信息来阻止某些不欢迎的浏览者
- #?阻止来自某网站的用户
- <IfModule?mod_rewrite.c>
- RewriteEngine?on
- RewriteCond?%{HTTP_REFERER}?scumbag.com?[NC,OR]
- RewriteCond?%{HTTP_REFERER}?wormhole.com?[NC,OR]
- RewriteRule?.*?-?[F]
- </ifModule>
8. 通过判断浏览器头信息来阻止某些请求
这个方法可以通过阻止某些机器人或蜘蛛爬虫抓取你的网站来节省你的带宽流量。
- #?阻止来自某些特定网站的用户
- <IfModule?mod_rewrite.c>
- SetEnvIfNoCase?^User-Agent$?.*(craftbot|download|extract|stripper|sucker|ninja|clshttp|webspider
|leacher|collector|grabber|webpictures)?HTTP_SAFE_BADBOT - SetEnvIfNoCase?^User-Agent$?.*(libwww-perl|aesop_com_spiderman)?HTTP_SAFE_BADBOT
- Deny?from?env=HTTP_SAFE_BADBOT
- </ifModule>
9. 禁止脚本执行,加强你的目录安全
- #?禁止某些目录里的脚本执行权限
- AddHandler?cgi-script?.php?.pl?.py?.jsp?.asp?.htm?.shtml?.sh?.cgi
- Options?-ExecCGI
.htaccess重写、安全防护、文件访问权限的更多相关文章
- C#更改文件访问权限所有者(适用于各个Windows版本)
前面也提到了,前段时间在做Online Judge系统,在正式上线前有几个比较老的版本,其中第一个版本使用ACL来控制权限以确保安全(但是这个版本完全建立在IIS上,所以这样做是没效果的),遇到了一些 ...
- Linux下进程的文件访问权限
本文转自 http://blog.csdn.net/chosen0ne/article/details/10581883 对进程校验文件访问权限包括两个部分,一是确定进程的角色(属于哪个用户或者组), ...
- 《UNIX环境高级编程》笔记--文件访问权限和新文件、目录所有权
1.与进程关联的用户ID和组ID 与一个进程关联的ID有一下几个: 实际用户ID和实际组ID标识我们究竟是谁.通常在一个会话间值是不会改变的,但是超级用户进程有方法改变 他们,在以后的进程控制中会进行 ...
- linux文件访问权限(像rw-r--rw-是什么意思)
Linux的文件访问权限分为 读.写.执行三种 r:可读(4) w:可写(2)对目录来说则可新建文件 x:可执行(1)对目录来说则可进入该目录 可用 ls -l 查看文件 像上图的-rw-r--rw- ...
- 文件访问权限:更改用户ID
本文来探讨一下通过更改用户ID来获取合适的文件访问权限.由于更改组ID的规则与用户ID相同,我们在这里只探讨用户ID. 纸上得来终觉浅 先了解以下几个基本知识: 用户ID包括:实际用户ID.有效用户I ...
- 用户id,组id和文件访问权限
实际用户ID和实际组ID:标示了我们究竟是谁,这两个字段在登录时取自口令文件中的登录项 有效用户ID和有效组ID以及附属组ID:决定了我们的文件的访问权限(通常有效用户ID等于实际用户ID,有效组ID ...
- Linux中ls -l(ll)返回结果中的文件访问权限-rw-r--rw-
linux文件访问权限(像rw-r--rw-是什么意思) Linux的文件访问权限分为 读.写.执行三种 r:可读(4) w:可写(2)对目录来说则可新建文件 x:可执行(1)对目录来说则可进入该 ...
- UNIX环境编程学习笔记(9)——文件I/O之文件访问权限的屏蔽和更改
lienhua342014-09-10 1 文件访问权限 在文件访问权限和进程访问控制中,我们已经讲述过文件访问权限位,为了方便,我们重新列在下面, 表 1: 文件的 9 个访问权限位 st_mod ...
- UNIX环境编程学习笔记(7)——文件I/O之文件访问权限与进程访问控制
lienhua342014-09-02 1 文件的设置用户 ID位 和设置组 ID位 与进程相关联的 ID 如下表所示, 表 1: 与进程相关联的用户 ID 和组 ID 实际用户 ID 我们实际上是谁 ...
- [Z] Linux下进程的文件访问权限
原文链接:http://blog.csdn.net/chosen0ne/article/details/10581883 对进程校验文件访问权限包括两个部分,一是确定进程的角色(属于哪个用户或者组), ...
随机推荐
- 从源码中无法看出函数所在的js脚本的解决方法
通过设置断点调试使js脚本自动出现
- 洛谷 P1507 NASA的食物计划
题目背景 NASA(美国航空航天局)因为航天飞机的隔热瓦等其他安 全技术问题一直大伤脑筋,因此在各方压力下终止了航天 飞机的历史,但是此类事情会不会在以后发生,谁也无法 保证,在遇到这类航天问题时,解 ...
- itop安装中使用nginx安装后不能出现enter itop的问题
安装中没有出现enter itop,  如下的网络请求给了我们原因 原来使用的是域名请求资源文件,而该域名并不能指向我的服务器,所以安装中资源文件请求不成功,查看了我的nginx配置,如下 [ro ...
- 将自己的数据制作成voc格式
VOCdevkit2007文件下只保存VOC2007,VOC2007下只保存Annotations ImageSets JPEGImages. JPEGImages存放所有的图片数据(即训练测试验证的 ...
- rc-local.service服务启动失败,导致rc.local中的开机启动服务不能启动
chmod +x /etc/rc.d/rc.local 打开/etc/rc.local文件,将启动非后台执行的指令的最后添加 &,以使相关指令后台运行,然后启动服务 systemctl ...
- VMware搭建内网并通过iptables端口转发联网
整体流程图 配置Server1 新建两块网卡 一块网卡设置为桥接模式,另外一块设置为仅主机模式 查看两块网卡配置 root@ubuntu:~# ifconfig ens33 Link encap:Et ...
- day23 01 类的命名空间
day23 01 类的命名空间 一.初识面向对象复习 定义类: class 函数:方法 动态属性 变量:类属性 静态属性 过程: (1)_init_方法:初始化:def _init_(self,参数 ...
- iframe的操作switch_to_frame使用方法.
一.frame和iframe区别 Frame与Iframe两者可以实现的功能基本相同,不过Iframe比Frame具有更多的灵活性. frame是整个页面的框架,iframe是内嵌的网页元素,也可以说 ...
- Python中的数据类型常见方法
list() 方法 1.cmp(list1, list2):#比较两个列表的元素 2.len(list):#列表元素个数 3.max(list):#返回列表元素最大值 4.min(list):#返回列 ...
- Cable master 求电缆的最大长度(二分法)
Description Inhabitants of the Wonderland have decided to hold a regional programming contest. The J ...