apache允许访问目录
㈠ apache无法访问网站根目录却能访问二级目录
先从网站上下载APACHE2.2.3 Mysql 5.0.22 php 5.2.0
假设:系统盘为 c:/
假设:安装好后目录状态会是这样子:
apache--> C:\Program Files\Apache Software Foundation\Apache2.2
mysql-->C:\Program Files\MySQL\MySQL Server 5.0
php--> c:/php
准备工作:
安装之前需要检查80端口、3306端口是否被其它程序占用,如果有,则需要删除相应的软件
-------------------------------------
第一步安装mysql
解 开压缩包,执行安装文件,大部分只需要按照缺省路径和安装提示进行安装就可以了,需要注意就是不能选择匿名用户,同时需要把mysql的路径加入系统的 Path路径中。安装结束后,需要重新启动计算机。重启计算机后,检查[控制面板]-[管理工具]-[服务],确定里面的mysql服务是否启动,如果没 有,则启动mysql服务。
注意:快捷方式里面的mysql登录端,是直接以root用户登录进去的,提示的密码是root用户的密码。你可以在此root用户的状态下,创建用户的数据库和新的用户。
命令如下:
CREATE DATABASE gc0100; //创建数据库
GRANT ALL PRIVILEGES ON gc0100.* to gc0100@localhost IDENTIFIED BY 'gc0100';//创建本地用户
GRANT ALL PRIVILEGES ON gc0100.* to gc0100@"%" IDENTIFIED BY 'gc0100';//创建远程用户
然后可以在[开始]->[运行],输入cmd
然后执行命令:
mysql –u 用户名 –p 访问的数据库
随后将提示输入相应用户的密码。
-----------------------------------
第二步: 安装apache 并配置支持PHP
双击安装文件apache_2.2.3-win32-x86-no_ssl.msi,按照缺省路径和提示安装就可以了。缺省将安装在C:\Program Files\Apache Software Foundation\Apache2.2下。
还会有输入框,提示输入域名呀管理员信箱,随便填就是了.
+----------------------------------------
| 注: 安装完后会自动安装并启动apache的服务,如在此处出现问题:
|“(OS 10048)通常每个套接字地址 (协议/网络地址/端口) 只允许使用一次:
| make_sock: could not bind to address 0.0.0.0:80...” 一般是IIS占用了80端口引起的
| 解决方法: 打开控制面板->服务找到 IIS admin 的服务关闭并禁用
| 然后用CMD进入命令行模式进入你安装apache的目录 /apache2/bin
+----------------------------------------
启动Apache,只需要在Apache的快捷功能中,进行启动就可以了。
随后在IE里面测试apache是否成功,输入
如果出现 It works!则表示apache安装成功。
------------------------------------
PHP的安装
将php-5.2.0-Win32.zip 里内容解压到 c:\php里
找 到 php目录里的 php.ini-dist (似乎这是一个习惯,其实我更喜欢用php.ini-recommended)重命名为 php.ini 并拷到 windows系统目录下(特殊情况:win2k系统目录为c:\winnt, Windows XP 则为 c:\windows目录。再将php目录里的所有动态库(*.dll)拷贝到system32目录下(win2k为c:\winnt\ system32,windows xp则为c:\windows\system32)最后到c:\php\ext下将php_gd2.dll php_mysql.dll这两个文件复制到system32目录下(同上)
---------------------------------
配置apache里的httpd.conf
用notepad打开C:\Program Files\Apache Software Foundation\Apache2.2\conf\httpd.conf文件
找到 AddDefaultCharset ISO-8859-1 将其改为
AddDefaultCharset GB2312(让默认语言编码为简体中文)
找到 DocumentRoot " C:\Program Files\Apache Software Foundation\Apache2.2\htdocs" 将其改为你的WEB目录,
如: DocumentRoot "D:/www"
找到 DirectoryIndex index.html index.html.var 在后面加入index.htm index.php (默认index.php为首页文件)--------------模块化安装PHP-----------------------
找到 #LoadMole ssl_mole moles/mod_ssl.so 这行,在此行后加入一行
LoadMole php5_mole c:/php/php5apache2.dll(**错误**)
修改为:LoadMole php5_mole “c:/php/php5apache2_2.dll”
原因: php5apache2.dll 只支持apache 2.0的版本,不能支持apache 2.2以上版本,因为我们最新的apache的版本是2.2.3
所以必须用新版本的动态库php5apache2_2.dll,不能用老版本的动态库。但是如果你安装的apache是2.0的版本,则只需要使用老版本的动态库就可以了,即php5apache2.dll
其中c:/php/php5apache2.dll(php5apache2_2.dll) 为你php目录中php5apache2.dll(php5apache2_2.dll)所在的位置
再找到 AddType application/x-gzip .gz .tgz 这行,在此行后加入一行
AddType application/x-httpd-php .php
(其实:上面两行红色的,你可以直接加在httpd.conf文件的最后面也可以的)
------------------------------------------
此时PHP环境基本已经配置成功
在WEB根目录(如我的D:\php\www)里建一个名为test.php (提示:用记事本的朋友,请避免文件为test.php.txt) ,的文件内容如下PHP代码:
<? echo phpinfo(); ?>
重新启动apache服务
用浏览器打开
如果可以看到php配置输出信息就OK了
(如果看到的是下载页面或者<? echo phpinfo(); ?>,请查查你所做的与上面是否有错漏)
---------------------------------------
三、配置php.ini并测试mysql、GD2(php.ini为 c:\windows下的 php.ini)找到
;extension=php_mysql.dll
将';'去掉改为
.extension=php_mysql.dll
找到
;extension=php_gd2.dll 去掉前面的;
以便支持GD库.如
extension=php_gd2.dll
找到
;session.save_path = "/tmp"
将';'去掉.设置你保存session的目录,如
session.save_path = "C:\WINDOWS\Temp";(windows xp)
session.save_path = "C:\winnt\Temp";(Windows 2000)
--------------------------------
重启apache服务
在Web根目录下(如 D:\php\www)建立testdb.php文件内容如下:
PHP代码:
<?php
$link=mysql_connect('localhost','root','123456'); //这里的root和123456是MYSQL的用户和密码,请根据你自己的情况改好
if(!$link) echo "fail";
else echo "success";
mysql_close();
?>
用浏览器打开 如果输出success就OK了
---------------------------------
四、phpmyadmin的安装配置
将phpMyAdmin-2.6.1.zip解压到WEB根目录(d:\php\www\中去),重命名文件夹为phpmyadmin或其它打开phpmyadmin 目录中的 config.inc.php
找到以下这些(以下我已改好):
$cfg['PmaAbsoluteUri'] = ''; //假设是有域名的服务器,可改成域名/phpmyadmin
$cfg['Servers'][$i]['user'] = 'root';
$cfg['Servers'][$i]['password'] = 'easy; //分别填上你mysql的用户和密码即可
$cfg['Servers'][$i]['auth_type'] = 'http'; // 这里也可以改为cookie
改好了保存,在浏览器打开 输入你的用户名和密码,便可以管理mysql了差不多了,如果你想让你的PHP代码执行得更快,就再装个Zend Optimizer.
可到下载
方法是:下载后双击,选择路径安装.问PHP.INI路径就填 c:/windows
装好重启apache服务.再看 时应该看到会多一些东西
㈡ 怎样设置Apache访问限制
一、禁止访问某些文件/目录
增加Files选项来控制,比如要不允许访问 .inc 扩展名的文件,保护php类库:
配置修改完后记得重启apache
㈢ 在apache配置目录里的这个文件“httpd.default.conf” 是干什么的
documentroot
是指定你的网站目录的,根据你找到的内容看来,你的网站目录目前在d:/apache/htdocs下面
是用来控制此目录的web访问权限的,例如允许哪些ip访问这个目录等,
你不用关心
这个。
只需要控制好
下的权限配置即可。
㈣ apache怎么指定访问后台目录
一、修改Apache的默认站点目录
Apache HTTP Server安装好后,默认的站点目录位于其安装目录下的htdocs文件夹内,默认首页是该文件夹的index.html文件。比如,我的Apache是安装在C:/wamp/bin/apache/Apache2.2.21内,那么我的Apache的完整的默认站点目录地址就是C:/wamp/bin/apache/Apache2.2.21/htdocs/,默认首页就是C:/wamp/bin/apache/Apache2.2.21/htdocs/index.html。
很多时候,不管是学习、测试,还是想真正的搭建自己的站点,我们可能并不想把自己的网站放在Apache默认的站点目录下,这时,本节的知识将会帮助你解决这个问题。
在httpd.conf找到 DocumentRoot D:/Apache/htdocs ,我把这行改为 DocumentRoot E:/htdocs 即可。
修改方法:1、到Apache的安装目录下找到conf文件夹,该文件夹内会httpd.conf这样一个文本文档,它是Apache的配置文件,负责指挥Apache的运行。
2、双击打开httpd.conf这个文本文档,按下键盘上的Ctrl+F组合键查找DocumentRoot (带英文双引号,见图),查找出来之后(仅有一处),将字符串DocumentRoot后面双引号内的字符串修改为自己想要设定的网站目录。
如:默认为DocumentRoot C:/wamp/bin/apache/Apache2.2.21/htdocs,现修改成DocumentRoot D:/Apache
3、完成上述第2步之后,暂不要关闭httpd.conf文件,继续查找,查找<Directory (带英文双引号,见图3),查找到<Directory 之后,将第一个Directory字符串后面双引号内的字符串修改为自己想要设定的网站目录。
如:默认为<Directory C:/wamp/bin/apache/Apache2.2.21/htdocs,现修改成<Directory D:/Apache
4、同时按下键盘上的Ctrl+S组合键保存上述修改,一定记得要停止(STOP)一次Apache服务然后再启动(START),使刚刚的修改生效。
综上所述,更改 Apache 默认网站根目录只需更改以下两个地方即可!
1.找到 DocumentRoot D:/Apache/htdocs 将D:/Apache/htdocs改为你自定义的网站目录;
2.找到 <Directory D:/Apache/htdocs 将D:/Apache/htdocs改为你自定义的网站目录。
㈤ 如何限制apache用户访问linux根目录
默认apache在当前目录下没有index.html入口就会显示目录。让目录暴露在外面是非常危险的事,如下操作禁止apache显示目录:
进入apache的配置文件
httpd.conf 找到:
Options Indexes FollowSymLinks
修改为:
Options
FollowSymLinks
其实就是将Indexes去掉,Indexes表示若当前目录没有index.html就会显示目录结构。
㈥ apache 虚拟主机无论怎样配置只能访问根目录,无法访问配置好的目录!
是不是你的两个配置冲突了
㈦ 怎样配置httpd.conf,修改文件目录访问权限
Apache的基本设置主要交由httpd.conf来设定管理,我们要修改Apache的相关设定,主要还是通过修改httpd.cong来实现。下面让我们来看看httpd.conf的内容,它主要分成3大部分:
Section 1:Global Environment
Section 2:'Main' server configuration
Section 3:Virtual Hosts
【第一部分】
·ServerType standalone
这表示Apache是以standalone启动,也可以是inetd。所谓standalone是指启动一次来接听所有的连线;而inetd是接到http的连线要求才启动,随着连线的结束而结束,这样负担是不是很但呢?所以一般都是以standalone启动。
·ServerRoot "/usr/local/httpd"
此为apache的目录
·#LocdFile /use/local/httpd/logs/httpd.lock
保留预设值,不更动
·PidFile /usr/local/httpd/logs/httpd.pid
此文件记录着apache的父处理程序id
·ScoreBoardFile /usr/local/httpd/logs/httpd.scoreboard
此文件存储处理程序的信息
·#ResourceConfig conf/srm.conf
·#AccessConfig conf/access.conf
由于我们统筹由httpd.conf来管理,所以这两个文件预设是注解起来的,可以保留预设值不更动
·Timeout 300
设盯超时的时间。如果用户端超过300秒还没连上server,或server超过300秒还没传送信息给用户端,即断线。
·KeepAlive On
允许用户端的连线有多个请求,设为Off表示不允许
·MaxKeepAliveRequests 100
每次连线最大的请求树木,数字愈大,效能愈好。0表示不限制
·MinSpareServer 5
·MaxSpareServers 10
MinSpareServer 5表示最少会有5个闲置的处理程序,如果实际的数目少于此数目,则会增加处理程序。MaxSpareServers 10表示最大的闲置处理程序数目,如果你的网站需求量很大,可以将此数目设大一些,大不要随便将此数目设得太大。
·StartServers 5
启动时Server的数目
MaxClients 150
限制同时间最大的连线数目,当然不能设得太小,一旦达到此数目,就无法再增加用户端
·MaxRequestPerChild 0
限制子处理程序结果前的要求数目,0表示不限制
·#Listen 3000
·#Listen 12.34.56.78:80
使用其它的连接端口或IP
·BindAddress *
可以接听*(所有IP地址)、指定的IP地址或是完整的域名
·#LoadMole foo_mole libexec/mod_foo.so
使用DSO模块
·#ExtendedStatus On
可检阅apache的状态信息,预设是Off(注解起来)
【第二部分】
如果之前的ServerType是inetd,请直接跳到ServerAdmin。
·Port 80
Standalone服务器接听的连接端口,当然也可以是其他小于1023的端口号
·User nobody
·Group nobody
执行httpd的用户和群组
·ServerAdmin 管理员的电子邮件地址
这是管理员的电子邮件地址,如果apache有问题的话,会寄信通知管理员,当然你也可以建立一个专门负责web的帐号来收信
·ServerName 你的主机名称
此为主机名称,如果没有域名,也可以用IP
·DocumentRoot "usr/local/httpd/htdocs"
此目录为apache放置网页的地方,里面的index.html即为连到此主机的预设首页
·
Options FollowSymLinks
AllowOverride none
此目录设定用户放置网页的目录(public_html)的执行动作。详细的目录存取方法会在后面说明
·
Options Indexes FolloeSymLinks
AllowOverride None
Order allow,deny
Allow from all
此目录设定apache的网页目录(htdocs)的执行动作
·UserDir public_html
用户可在自己的目录下建立public_html目录来放置网页,输入http://主机地址/~用户名称即可连接到...劳撤胖玫牡胤?/a>
·DirectoryIndex index.html
这里设定预设主页的名称
·AccessFileName .htaccess
这个是控制存取的文件名称,一般采用预设的.htaccess名称,后面会说明htaccess的使用方法
·
Order allow,deny
Deny from all
这用来防止其他人看到.ht开头的文件内容,不仅是保护.htaccess的内容,还保护.htpasswd的内容。当然也可以直接写成。如果你有更改AccessFilename,例如将.htaccess改成.accessht,请记得也要在此做相关的更改,如此才能防止其他人看到哦
·#CacheNegotiatedDocs
注解起来是告诉Proxy不要将互动产生的文件存入cache,如果拿掉#,则会存在cache中
·UseCanonicalName On
使用标准的名称,预设是On。假设有一个web server的全名是www.sample.com,一般称为www;如果us...羑ttp://www/abc
·TypeConfig /usr/local/httpd/conf/mime.types
指定存放MIME文件类型的文件。你可以自行编辑mime.types文件。
·DefaultType text/plain
当server不认得此文件类型时的预设格式,此设定是当成一般文字
·
MIMEMagicFile /usr/local/httpd/conf/magic
mod_mime_magic模块可使server由文件内容决定其MIME类型。如果有载入mod_mime_magic模块,才会处理MIMEMagicFile这一段。如果是…,则表示如果没有载入该模块,才会处理这一段
·HostLookups Off
如果为On,则每次都会向name server解析该IP,记录此连线的名称(例如www.apache.org)自换岷牟簧偈奔洌...为Off,仅记录IP
·ErrorLog /usr/local/httpd/logs/error_log
指定发生错误的记录文件(error_log)位置。如果在没有指定发生错误的记录文件,则会沿用此文件
·LogLevel warn
记录分成很多等级,在此是warn。各等级如下: 等级 说明
debug debug信息
info 普通信息
notice 重要信息
warn 警告信息
error 发生错误
crit 紧急情况
alert 马上要处理的情况
amerg 系统快要死了
·LogFormat "%h %l %u %t\"%r\"%>s %b\"{Referer}i\"\"${UserAgent}i\""combined
LogFormat "%h %l %u %t"%r\"%>s %b"commom
LogFormat "%{Referer}i->%U"referer
LogFormat "%{User-agent}i"agent
自定四种记录格式:combined、common、referer、agent
·CustomLog /usr/local/httpd/logs/access_log common
存取的记录文件(access_log)使用自定的common格式
·#CustomLog /usr/local/httpd/logs/referer_log referer
#CustomLog /usr/local/httpd/logs/agent_log agent
#CustomLog /usr/local/httpd/logs/agent_log combined
这三个记录文件也是使用自定义格式(分别是referer、agent、combined),不过注解起来表示未使用这三个文件
·ServerSignature On
设为On时,在server所产生的网页(像是错误发生时)上,会有apache的版本、主机、连接端口的一行信息;如果设为Email,则会有mailto:给管理员的超链接
·Alias /icons/ "/usr/local/httpd/icons/"
使用较短的别名,其格式为:Alias 别名 原名。
·ScriptAlias /cgi-bin/ "/usr/local/httpd/cgi-bin/"
和Alias一样,只是这是设定server script的目录
·IndexOptions FancyIndexing
显示好看的文件清单(配合下面各文件所对应的图形)
·AddIconByEncoding(CMP,/icons/compressed.gif)x-conpress x-gzip
·AddIcon /icons/blank.gif^^BLANKICON^^DefaultIcon/icons/unknow.gif
这些是在显示文件清单(之前所说的FancyIndex)时,各种文件类型的对应图形。例如.ps .si .eps这三种文件的表示图形都是a.gif
·#AddDescription "GZIP conpressed document" .gz
#AddDescription "tar archive" .tar
#AddDescription "GZIP compressed tar archive" .tgz
这些是在显示文件清单时,在文件后面附上说明,其格式为:
AddDescription "说明" 文件名
例如:AddDescription "It is private txt" my.txt
·ReadmeName README
显示文件清单时,在最下面显示README的文件内容
设置CGI脚本/将httpd.conf做为唯一的配置文件/用户授权和访问控制等
关于Apache的配置及使用,在LinuxAid中已经有不少文章做了详细的阐述,本文讨论了在使用Apache时,有关配置文件的使用及对文件的访问控制等内容,算是对Apache的使用所做的一些补充吧!
如果您对Apache有一定的了解,特别是对几个配置文件有一定的了解,这将会有助于您对本文内容的理解;如果恰巧您不是很了解这几个配置文件的使用,那么就借着这个机会来一起熟悉一下吧。
一、关于CGI执行脚本的配置
这里有两种设置CGI脚本的方法。第一、CGI的脚本文件以.cgi为扩展名;第二、设置脚本可执行目录。但是这两种方法都需要将要执行的文件设置为711,才可以被执行。
第一种方法,我们需要在access.conf文件种将你要发行的目录设置为Option ExecCGI All,在srm.conf资源配置文件中,加上下列一句:
AddHandle cgi-script .cgi
这样在所有的目录种只要你的文件是.cgi为扩展名的,且文件访问权限为711的,无论给文件在你发行目录的任何一个地方都可以做为CGI被Apache服务器调用。这种方法一般没有第二种方法安全。
第二种方法,是将一个目录作为一个可执行目录,将所有的cgi文件都放在其中,这里就不一定非得是以.cgi为扩展名得文件可以执行,而是只要有711属性的文件就可以被执行,而且其它的非可执行文件都被禁止访问。我们的默认配置文件种就有一个很好的例子:
access.conf:
Allow Override None
Options ExecCGI
srm.conf
ScriptAlias /cgi-bin/ /home/httpd/cgi-bin/
这样只要在/home/httpd/cgi-bin/目录中的可执行文件都可以被Web服务器调用,而其它的非可执行文件将被拒绝访问。
二、配置用户的发行目录
这里有两种设置方法:
第一种是系统的默认方法,即用户目录下的public_html目录为用户的发行目录,且默认的主页文件为index.html,且该目录不支持CGI。
第二种是在其它目录种专门为用户设置发布目录,如我想在/home/html目录做为用户的web目录,那管理员就应该在该目录下为每一个用户设置一个子目录,如:/home/html/user01、/home/html/user02等。那么,你的srm.conf文件中的UserDir后面就不能再是public_html了,应该改为:UserDir /home/html/*/,注意这里的“*”代表anyone,当你再浏览器中请求一个如http://www.domain/~user01时,Apache...ndex.html文件。
这种设置不需要到access.conf中设置该目录的访问属性,还有,当我们设置虚拟主机时也不用设置目录的访问属性,但是如果你想让某个目录具有CGI权限,都要到Access.conf文件中去配置目录的访问权限,如:你想让你的所有用户在他们的发布目录中具有CGI访问权,则需要在你的access.conf中这样设置:
Allow Override None
Options ExecCGI
注意这里设置用户目录中的cgi-bin子目录为cgi执行目录,这是一种安全的设置,而且也是一种UNIX的习惯。
三、如何将Apache服务器设置为inetd的子服务
当你安装了Apache后,默认设置为standalone方式运行,如果你想将它设置为inetd的子服务,首先在每次激活Linux时不激活httpd,然后编辑/etc/inetd.conf,在其中加入下列语句:http stream tcp nowait root /usr/sbin/httpd httpd
然后重新激活inetd服务器。这样你用ps -aux命令查看进程运行情况时,你不会发现httpd的进程的存在,但是一旦有客户请求一个页面时,inetd就激活一个httpd进程为该请求服务,之后就自动释放,这种运行方式有助于节省系统资源,但是如果你的web服务很重要,一般不建议设置为这种方式运行。
四、将httpd.conf做为唯一的配置文件
在Apache中给用户提供了三个配置文件: srm.conf、 access.conf 和 httpd.conf files。实际上这三个文件是平等的,所有的配置都可以放在一个单独的httpd.conf文件中,事实上在Apache 1.3.2中就已经这样做了,在httpd.conf中应包括以下两条指令来防止Apache对srm.conf和access.conf两个配置文件的访问:
AccessConfig /dev/null
ResourceConfig /dev/null
在apache1.3.2中只要注释掉以下这两行即可:
AccessConfig conf/access.conf
ResourceConfig conf/srm.conf
五、用户授权和访问控制
你也许在访问某些网站时会遇到过这样的情况,当你点击某个连接时,你的浏览器会弹出一个身份验证的对话框,要求输入账号及密码,如果没有,就无法继续浏览了。有人会以为这是用CGI做出来的,其实不然,这是WWW服务器的用户授权和访问控制机制在发挥作用。
你是否还记得在设置Apache服务环境的过程中,有……..<./Directory>这个指令,可以对不同的目录提供不同的保护。但是这样的设定,需要重新启动服务器才会生效,灵活性较差,通过AccessFile指令指定访问控制文件的方式则比较灵活,在Apache服务器中设置用户的访问控制权限步骤如下:
1、首先对httpd.conf文件进行设置如下:
# AllowOverride FileInfo AuthConfig Limit
# Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec
Options Includes FollowSymLinks Indexes
AllowOverride All //*注意AllowOverride 一定要设置为All,这样后面的.htaccess文件才会起作用
Order allow,deny
Allow from all
#
# Order deny,allow
# Deny from all
#
#指定配置存取控制权限的文件名称
AccessFileName .htaccess
2、创建.htaccess文件内容
要控制某目录的访问权限必须建立一访问控制文件,文件名前面指定的“.htaccess”,其内容格式如下:
AuthUserFile 用户帐号密码文件名
AuthGroupFile 群组帐号密码文件名
AuthName 画面提示文字
AuthType 验证方式
密码验证方式
用户验证方式AuthType目前提供了Basic和Digest两种。
密码检验设定方法与httpd.conf中的相关设定相同。
具体例子如下:
AuthUserFile /etc/secure.user
AuthName 安全认证中心
AuthType Basic
require valid-user
3、建立用户密码文件
如果你是第一次创建用户密码,命令格式如下:
htpasswd -c 密码文件名 用户名称
在上面的例子中,我们将用户密码文件放到了/etc/secure.user文件中,所以这里应按照如下进行操作:
htpasswd -c /etc/secure.user sword
程序会提示你输入两次用户的口令,然后用户密码文件就已经创建sword这个用户也添加完毕了。
如果要向密码文件中添加新的用户,按照如下命令格式进行操作:
htpasswd 密码文件 用户名称
这样,重新启动httpd后,进行该WEB目录时就会有一个对话框弹出,要求输入用户名及用户口令了。
4、如何减少访问控制对Apache性能的影响
频繁的使用访问控制会对Apache的性能产生较大的影响,那么,如何才能减少这种影响呢?最简单也是最有效的方法之一就是减少.htaccess文件的数目,这样可以避免Apache对每一个请求都要按照.htaccess文件的内容进行授权检查。它不仅在当前的目录中查找.htaccess文件,它还会在当前目录的父目录中查找。
/
/usr
/usr/local
/usr/local/etc
/usr/local/etc/httpd
/usr/local/etc/httpd/htdocs
/usr/local/etc/httpd/htdocs/docs
通常在根目录下没有htaccess文件,但Apache仍然会进行例行检查以确定该文件确实不存在。这是影响很影响服务器工作效率的事情。下面的方法可以消除这个讨厌的过程:将AllowOverride选设置为None,这样Apache就会检查.htaccess文件了。将/根目录的AllowOverride选项设为None,只将需要进行访问控制的目录下的AllowOverride选项设置为all,如下面的例子中将/根目录的AllowOverride 选项关闭了,只打开了/usr/local/etc/httpd/htdocs目录下的AllowOerride选项,这样,系统就只
㈧ apache目录访问控制的参数是哪些
1.根目录的访问控制
DocumentRoot "/var/www/html"
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
解释一下:
<Directory/>表示要对文件系统的目录进行限制
Options FollowSymLinks表示跟随符号链接,关于Option的值参下表
AllowOverrideNone表示不允许覆盖,AllowOverride的值参见下表,在此例中对根目录做了非常严格的限制,即只允许跟随符号链接,不允许其他文件覆盖当前的设置。
2.文档根目录的访问控制-----(针对文档根目录"/var/www/html"进行限制。)
<Directory "/var/www/html">
Options Indexes FollowSymLinks
Order allow,deny
Allow from all
</Directory>
解释一下:
OptionsIndexs
FollowSymLinks:设置允许跟随符号连接:Indexes的含义是如果要访问的文档不存在,则会显示出该目录下的文件目录清单。
AllowOverride
None:不允许覆盖当前设置,即不处理.htaccess文件。
Allow from all:允许从任何地点访问该目录
拓展一下(关于OrderAllow,Deny详解):
Allow和Deny可以用于apache的conf文件或者.htaccess文件中(配合Directory,Location,
Files等),用来控制目录和文件的访问授权。
所以,最常用的是:
Order Deny,Allow
Allow from All
注
意“Deny,Allow”中间只有一个逗号,也只能有一个逗号,有空格都会出错;单词的大小写不限。上面设定的含义是先设定“先检查禁止设定,没有禁止
的全部允许”,而第二句没有Deny,也就是没有禁止访问的设定,直接就是允许所有访问了。这个主要是用来确保或者覆盖上级目录的设置,开放所有内容的访
问权。
按照上面的解释,下面的设定是无条件禁止访问:
Order Allow,Deny
Deny from All
如果要禁止部分内容的访问,其他的全部开放:
Order Deny,Allow
Deny from ip1 ip2
或者
Order Allow,Deny
Allow from all
Deny from ip1 ip2
apache
会按照order决定最后使用哪一条规则,比如上面的第二种方式,虽然第二句allow允许了访问,但由于在order中allow不是最后规则,因此还
需要看有没有deny规则,于是到了第三句,符合ip1和ip2的访问就被禁止了。注意,order决定的“最后”规则非常重要,下面是两个错误的例子和
改正方式:
Order
Deny,Allow
Allow from all
Deny from domain.org
错误:想禁止来自domain.org的访问,但是deny不是最后规则,apache在处理到第二句allow的时候就已经匹配成功,根本就不会去看第三句。
解决方法:Order Allow,Deny,后面两句不动,即可。
Order
Allow,Deny
Allow from ip1
Deny from all
错误:想只允许来自ip1的访问,但是,虽然第二句中设定了allow规则,由于order中deny在后,所以会以第三句deny为准,而第三句的范围中又明显包含了ip1(allinclude ip1),所以所有的访问都被禁止了。
解决方法一:直接去掉第三句。
解决方法二:
Order Deny,Allow
Deny from all
Allow from ip1