前言

看了几篇文章,发现自己对于如何维护普通的服务器安全完全不会,先从简单的.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]了那么表示会将请求中的?转换为&

参考链接

https://lesca.me/archives/htaccess-basic.html

http://lesca.me/archives/htaccess-appendix.html#htaccess_regex

http://lesca.me/archives/htaccess-rewrite.html

.htaccess文件的更多相关文章

  1. 用.htaccess文件实现URL重写

    注:第一部分来自 http://www.cnblogs.com/wangkongming/archive/2012/11/13/2768251.html     这位博主的个人网站简洁   还有诗歌  ...

  2. 在linux 服务器上用.htaccess文件实现二级域名访问子目录

    实现子域名绑定网站子目录的方法有很多,比如可以用js跳转,可以用php实现,可以301跳转等,但最常用的应该是RewriteEngine方式了.   新建一个笔记本命名为.htaccess(在wind ...

  3. iis6上使用.htaccess文件,ISAPI_Rewrite的安装及使用

    在Apache上很有用的.htaccess文件在IIS上就没有,要想实现类似的跳转功能可以使用ISAPI_Rewrite来代替,这是一个专门为IIS设置的工具,目的就是代替.htaccess实现很多功 ...

  4. ThinkPHP 利用.htaccess文件的 Rewrite 规则隐藏URL中的 index.php

    1.首先修改Apache的httpd.conf文件. 确认httpd.conf配置文件中加载了mod_rewrite.so 模块,加载的方法是去掉mod_rewrite.so前面的注释#号 讲http ...

  5. apache配置rewrite及.htaccess文件(转载)

    今天看到一个哥们的帖子发了个rewrite的帖子,以前也写过一个,配置挺简单的,但当时没注意这个问题,当时没有用到.htaccess文件,在机子上测试了一下,发现确实没法用,于是开始找问题的所在. 自 ...

  6. htaccess文件还可以被用来把访问网站的流量劫持到黑客的网站

    看是否有文件上传操作(POST方法), IPREMOVED--[01/Mar/2013:06:16:48-0600]"POST/uploads/monthly_10_2012/view.ph ...

  7. 禁止浏览.htaccess文件

    很多黑客会攻击和利用.htaccess做网站跳转,所以保护好.htaccess文件尤为重要. 在apache的httpd.conf的配置文件中 默认是已经设置了禁止对.htaccess的访问,截取相关 ...

  8. 在.htaccess文件中写RewriteRule无效的问题的解决

    近来在Apache Rewrite 拟静态配置时,遇到个问题.写的如下: RewriteEngine onRewriteRule ^/t_(.*)/$ /test.php?id=$1 保存在httpd ...

  9. 创建.htaccess文件

    在linux下创建.htaccess文件非常简单,直接新建一个文件并重命名为.htaccess即可. 下面我来讲下如何在Window下创建.htaccess文件 一般在本地电脑上是无法建立 .htac ...

  10. .htaccess文件详解

    启用.htaccess,需要修改httpd.conf,启用AllowOverride,并可以用AllowOverride限制特定命令的使用 笼统地来说,.htaccess可以帮我们实现包括:文件夹密码 ...

随机推荐

  1. 驱动学习3.1:获取zynqled的物理地址

    自己想要打印EMIO管脚的物理地址,在SDK提供的头文件中加入printf是无法打印的,基于此 我将需要打印地址的几个函数提取出来,放在main函数中,然后在里面加入printf打印这些用户管脚的地址 ...

  2. linux下配置java环境及问题

    一:下载jdk 下载稳定版本http://www.oracle.com/technetwork/cn/java/javase/downloads/jdk7-downloads-1880260.html ...

  3. codevs 1492 探案第二部

    1492 探案第二部  时间限制: 1 s  空间限制: 128000 KB     题目描述 Description 我们伟大的 Sherlock·Holmes 先生最近遇上了一件相当棘手的案子,随 ...

  4. (知识扩展)R运用领域一览表

    • Applications and Case Studies - Lessons and Experiences • Big Data Analytics • Biomedical and Heal ...

  5. Redhat 7 之 Mariadb(mysql)

    Redhat7 之后mysql 改为Mariadba,由于mysql 被卖给了IBM, 有闭源的风险. 所以就另外开了一个新的分支,继续开源.Maria 来源于mysql开发者的女儿的名字. 1. 安 ...

  6. 【BZOJ】1798: [Ahoi2009]Seq 维护序列seq 线段树多标记(区间加+区间乘)

    [题意]给定序列,支持区间加和区间乘,查询区间和取模.n<=10^5. [算法]线段树 [题解]线段树多重标记要考虑标记与标记之间的相互影响. 对于sum*b+a,+c直接加上即可. *c后就是 ...

  7. .NET中的异常和异常处理

    .NET中的异常(Exception) .net中的中异常的父类是Exception,大多数异常一般继承自Exception. 可以通过编写一个继承自Exception的类的方式,自定义异常类! 异常 ...

  8. 【leetcode 简单】第三十一题 买卖股票的最佳时机

    给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格. 如果你最多只允许完成一笔交易(即买入和卖出一支股票),设计一个算法来计算你所能获取的最大利润. 注意你不能在买入股票前卖出股票. 示例 ...

  9. JWT 拓展

    JWT适用场景 https://www.jianshu.com/p/af8360b83a9f 适用于一次性操作的认证,颁布一个很短过期时间的JWT给浏览器. 无状态的JWT无法实现精确的在线人数统计. ...

  10. WordPress手机端插件——WPtouch

    戒微博之后,把更多的精力开始转投回网站上来:今天用nexus7访问@Bee君 的博客时,发现博客的界面与电脑上访问的界面不相同,顺藤摸瓜之后发现原来bee君使用的是WPtouch-pro插件来实现移动 ...