在配置Apache服务器时,可以在主配置文件(http.conf)中配置访问控制,还可以使用.htaccess 文件配置对指定目录的访问控制。
注意:
复制代码代码示例:
AccessFileName .htaccess
<Files ~ "^\.htaccess"> Order allow,deny Deny from all </Files>
2.控制在.htaccess文件中可以使用的指令组
指令组 可用指令 说明
============================ AuthConfig AuthDBMGroupFile, AuthDBMUserFile, AuthGroupFile, AuthName, AuthType, AuthUserFile, Require 进行认证、授权以及安全的相关指令 ============================= FileInfo DefaultType, ErrorDocument, ForceType, LanguagePriority, SetHandler, SetInputFilter, SetOutputFilter 控制文件处理方式的相关指令 ============================= Indexes AddDescription, AddIcon, AddIconByEncoding, AddIconByType, DefaultIcon, DirectoryIndex, FancyIndexing, HeaderName, IndexIgnore, IndexOptions, ReadmeName 控制目录列表方式的相关指令 ============================== Limit Allow,Deny,Order 进行目录访问控制的相关指令 ============================== Options Options, XBitHack 启用不能在主配置文件中使用的各种选项 ============================= All 全部指令组 可以使用以上所有指令 ============================= None 禁止使用所有指令 禁止处理.htaccess文件 ==============================
生成.htaccess文件
使用.htaccess文件举例
复制代码代码示例:
//首先在文档根目录下生成一个private目录,并创建测试文件
# cd /var/www/html # mkdir private # cd private # touch test //修改配置前,在客户浏览器查看结果,如图1所示 //修改主配置文件 # vi /etc/httpd/conf/httpd.conf //添加如下配置语句 <Directory "/var/www/html/private"> AllowOverride Options </Directory> # //重新启动httpd # service httpd restart //在/var/www/html/private目录下生成.htaccess文件 # vi /var/www/html/private/.htaccess //添加如下配置语句 Options –Indexes # //在客户浏览器中查看结果,如图2所示 //通过查看配置结果,可以证明.htaccess已经生效。 //即对private目录的访问不生成文件列表
什么是.htaccess文件
在需要针对目录改变服务器的配置,而对服务器系统没有root权限时,应该使用.htaccess文件。如果服务器管理员不愿意频繁修改配置,则可以允许 用户通过.htaccess文件自己修改配置,尤其是ISP在一台机器上提供多个用户站点,而又希望用户可以自己改变配置的情况下,一般会开放部分. htaccess的功能给使用者自行设置。 Apache可以使用分布在整个网页结构中的特殊文件来进行配置,这些特殊文件通常叫.htaccess,也可以用AccessFileName指令来改 变。.htaccess 文件中的指令的作用域是存放它的那个目录及其所有子目录。.htaccess 文件的语法与主配置文件相同。由于对每次请求都会读取.htaccess 文件,所以对这些文件的改变会立即生效。
可以查阅Context了解可以放在.htaccess 文件中的指令;服务器管理员可以通过AllowOverride指令,来决定.htaccess 文件中可以生效的指令。
401 Authorization Required
403 Forbidden 404 Not Found 405 Method Not Allowed 408 Request Timed Out 411 Content Length Required 412 Precondition Failed 413 Request Entity Too Long 414 Request URI Too Long 415 Unsupported Media Type
常见的服务器错误返回代码:
复制代码代码示例:
ErrorDocument 404 /errors/notfound.html
ErrorDocument 500 /errors/internalerror.html
一条指令一行。上述第一条指令的意思是对于404,也就是没有找到所需要的文档的时候得显示页面为/errors目录下的notfound.html页面。不难看出语法格式为:
如果所需要提示的信息很少的话,不必专门制作页面,直接在指令中使用HTML号了,例如下面这个例子:
复制代码代码示例:
zheng:y4E7Ep8e7EYV
这里密码经过加密,用户可以自己找些工具将密码加密成.htaccess支持的编码。该文档最好不要放在www目录下,建议放在www根目录文档之外,这样更为安全些。
复制代码代码示例:
AuthUserFile .htpasswd的服务器目录
AuthGroupFile /dev/null (需要授权访问的目录) AuthName EnterPassword AuthType Basic (授权类型) require user wsabstract (允许访问的用户,如果希望表中所有用户都允许,可以使用 require valid-user)
注,括号部分为学习时候自己添加的注释
复制代码代码示例:
order allow,deny
deny from 210.10.56.32 deny from 219.5.45. allow from all
第二行拒绝某个IP,第三行拒绝某个IP段,也就是219.5.45.0~219.2.45.255
复制代码代码示例:
order allow,deny
deny from all
URL转向
改变缺省的首页文件 防盗链设置方法
如果不喜欢别人在他们的网页上连接自己的图片、文档的话,也可以通过htaccess的指令来做到。
复制代码代码示例:
RewriteEngine on
RewriteCond % !^$ RewriteCond % !^http://(www.)?mydomain.com/.*$ [NC] RewriteRule .(gif|jpg)$ - [F]
如果觉得让别人的页面开个天窗不好看,那可以用一张图片来代替:
复制代码代码示例:
RewriteEngine on
(责任编辑:IT)RewriteCond % !^$ RewriteCond % !^http://(www.)?mydomain.com/.*$ [NC] RewriteRule .(gif|jpg)$ http://www.mydomain.com/替代图片文件名 [R,L] |