.htaccess文件
前言
看了几篇文章,发现自己对于如何维护普通的服务器安全完全不会,先从简单的.htaccess来研究吧
.htaccess文件的作用,就是更改httpd.ini文件中的配置,但作用范围仅限当前文件夹
在使用.htaccess文件之前确认httpd.ini文件中AllowOverride All是否存在
.htaccess中不区分大小写
配置
访问控制
在实施访问控制时,最简单的访问控制就是
deny from all
禁止所有用户在url中访问该文件夹(包括子文件夹)
但是实际上总不可能全部都禁止(至少要让自己访问吧),总要允许一些主机访问,所以这时就需要使用allow
allow from 127.0.0.1
deny from all
实际使用中还可能会使用order,来指定allow和deny的顺序
例:
Order allow,deny
allow from 127.0.0.1
deny from all
表示先进行allow操作,在进行deny操作,这就导致所有的用户都会被禁止
而
Order deny,allow
allow from 127.0.0.1
deny from all
则会先使用deny,在进行allow操作,这就使得可以通过127.0.0.1来访问
当然也可以使用域名来替代ip
Order allow,deny
allow from .*domain\.com.*
deny from all
通过allow,deny和order的设置则可以进行控制访问
文件访问限制
有些时候需要对一些文件进行限制,使其不能让所有人都能访问
例
<files 1.txt>
order deny,allow
deny from all
allow from 127.0.0.1
</files>
限制其只能通过127.0.0.1访问
当然,支持通配符
<files *.txt>
order deny,allow
deny from all
allow from 127.0.0.1
</files>
<files [1-2].txt>
order deny,allow
deny from all
allow from 127.0.0.1
</files>
但是这样并不能对文件类型进行限制,所以,我们可以使用
<filesmatch ".txt$">
order deny,allow
deny from all
allow from 127.0.0.1
</filesmatch>
来正则匹配文件类型,总而达到禁止访问的目的
任意目录浏览
虽然说任意目录浏览可能会造成一系列的问题,但是有时候我们又不得不开启这项功能(比如列举所有的文件以供下载时)
开启
options all +indexes
禁用
options all -indexes
或
indexignore *
如果我们只想提供一部分文件下载呢?
options all +indexes
indexignore *.php
不提供php文件
定义首页文件
如果在不同的文件夹中存在不同文件名的文件,而我们又想将他们全部作为首页文件,那么可以这样写
directoryindex index222.html333
配置错误文件
访问各大站的页面,发现其404页面都有所不同,当然框架内部的实现不去考虑,仅是单纯从apache的层次实现
其实很简单
errordocument 404 /404.html
url重写
有时候我们不想让别人知道我们服务器后端脚本的类型,想将其隐藏起来,我们可以使用静态的url,或者使用restful风格的url
当然,这里只是实现简单的静态解析
比如,访问index就相当于访问index.php
RewriteEngine On
RewriteRule ^(\w+)$ $1.php
这样就隐藏了后缀名
重定向
如果想实现域名重定向,则可以这样
RewriteEngine On
RewriteRule ^(\w+)$ $1.php [r]
实现301跳转
RewriteEngine On
RewriteRule ^(\w+)$ $1.php [r=301]
实现302跳转
RewriteEngine On
RewriteRule ^(\w+)$ $1.php [r=302]
当然,跳转时也可以定义基准目录(基于网站根目录)
rewriteengine on
rewritebase /
RewriteRule ^(\w+)$ $1.php
实现静态URL
当访问127.0.0.1/index/info/1时就相当于访问127.0.0.1/index.php?info=1
rewriteengine on
RewriteRule ^(\w+)/(\w+)/(\w+)/$ $1.php?$2=$3
正则表达式
rewrite中可以使用正则表达式来进行匹配
[F] 使得服务器返回403
[L] 表示当前是最后一条规则,匹配完后停止重写
[NC] 表示当前规则中不区分大小写
[QSA] 如果加上了[qsa]了那么表示会将请求中的?转换为&
参考链接
http://lesca.me/archives/htaccess-appendix.html#htaccess_regex
.htaccess文件的更多相关文章
- 用.htaccess文件实现URL重写
注:第一部分来自 http://www.cnblogs.com/wangkongming/archive/2012/11/13/2768251.html 这位博主的个人网站简洁 还有诗歌 ...
- 在linux 服务器上用.htaccess文件实现二级域名访问子目录
实现子域名绑定网站子目录的方法有很多,比如可以用js跳转,可以用php实现,可以301跳转等,但最常用的应该是RewriteEngine方式了. 新建一个笔记本命名为.htaccess(在wind ...
- iis6上使用.htaccess文件,ISAPI_Rewrite的安装及使用
在Apache上很有用的.htaccess文件在IIS上就没有,要想实现类似的跳转功能可以使用ISAPI_Rewrite来代替,这是一个专门为IIS设置的工具,目的就是代替.htaccess实现很多功 ...
- ThinkPHP 利用.htaccess文件的 Rewrite 规则隐藏URL中的 index.php
1.首先修改Apache的httpd.conf文件. 确认httpd.conf配置文件中加载了mod_rewrite.so 模块,加载的方法是去掉mod_rewrite.so前面的注释#号 讲http ...
- apache配置rewrite及.htaccess文件(转载)
今天看到一个哥们的帖子发了个rewrite的帖子,以前也写过一个,配置挺简单的,但当时没注意这个问题,当时没有用到.htaccess文件,在机子上测试了一下,发现确实没法用,于是开始找问题的所在. 自 ...
- htaccess文件还可以被用来把访问网站的流量劫持到黑客的网站
看是否有文件上传操作(POST方法), IPREMOVED--[01/Mar/2013:06:16:48-0600]"POST/uploads/monthly_10_2012/view.ph ...
- 禁止浏览.htaccess文件
很多黑客会攻击和利用.htaccess做网站跳转,所以保护好.htaccess文件尤为重要. 在apache的httpd.conf的配置文件中 默认是已经设置了禁止对.htaccess的访问,截取相关 ...
- 在.htaccess文件中写RewriteRule无效的问题的解决
近来在Apache Rewrite 拟静态配置时,遇到个问题.写的如下: RewriteEngine onRewriteRule ^/t_(.*)/$ /test.php?id=$1 保存在httpd ...
- 创建.htaccess文件
在linux下创建.htaccess文件非常简单,直接新建一个文件并重命名为.htaccess即可. 下面我来讲下如何在Window下创建.htaccess文件 一般在本地电脑上是无法建立 .htac ...
- .htaccess文件详解
启用.htaccess,需要修改httpd.conf,启用AllowOverride,并可以用AllowOverride限制特定命令的使用 笼统地来说,.htaccess可以帮我们实现包括:文件夹密码 ...
随机推荐
- C++ string类析构报错
我项目中用到了字符串的Base64转码.DES解密等功能,可能DES解密算法只能解密8字节倍数长度的字符串,所以我得到的结果总会存在一个多余的“尾巴”,于是我想要做一个字符串尾部清理的工作.我的做法是 ...
- OpenCV---直方图的应用(均衡化和图像比较)
一:全局直方图均衡化(对比度增强)equalizeHist def equalHist_demo(image): #OpenCV直方图均衡化都是基于灰度图像 gray = cv.cvtColor(im ...
- Tomcat不能启动注意事项
Server.xml中的<Context></Context>不能有相同的两个或多个,把相同的只能保留一个
- Jenkins使用教程之管理节点
通常的情况下在我们的一个项目当中,项目会有多个分支系统,而我们不可能为每个分支系统都配置一个jenkins服务,这样既浪费资源,也增加构建部署的难度,为了解决这个问题jenkins给使用者提供了非常强 ...
- HDU 4496 并查集 逆向思维
给你n个点m条边,保证已经是个连通图,问每次按顺序去掉给定的一条边,当前的连通块数量. 与其正过来思考当前这边会不会是桥,不如倒过来在n个点即n个连通块下建图,检查其连通性,就能知道个数了 /** @ ...
- CF821 E. Okabe and El Psy Kongroo 矩阵快速幂
LINK 题意:给出$n$条平行于x轴的线段,终点$k$坐标$(k <= 10^{18})$,现在可以在线段之间进行移动,但不能超出两条线段的y坐标所夹范围,问到达终点有几种方案. 思路:刚开始 ...
- MongoDB 分页
使用Skip和limit可以如下做数据分页: Code: page1 = db.things.find().limit(20) page2 = db.things.find().skip(20).li ...
- phpcms取内容发布管理中的来源
调取内容发布管理中的来源,如果直接写{$val['copyfrom']}调取出来的内容为 内容|0 ,要先根据“|”进行拆分,然后再写. 示例: <!--新闻开始--> {pc:co ...
- mysql查询日期相关的
今天 select * from 表名 where to_days(时间字段名) = to_days(now()); 昨天 SELECT * FROM 表名 WHERE TO_DAYS( NOW( ) ...
- [SCOI2010]生成字符串 题解(卡特兰数的扩展)
[SCOI2010]生成字符串 Description lxhgww最近接到了一个生成字符串的任务,任务需要他把n个1和m个0组成字符串,但是任务还要求在组成的字符串中,在任意的前k个字符中,1的个数 ...