.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]了那么表示会将请求中的?转换为&

参考链接

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

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

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

posted @ 2018-11-15 12:48  HF9  阅读(267)  评论(0编辑  收藏  举报