Apache 配置详解
目录索引配置
使用模块:mod_autoindex
- 确认 LoadModule autoindex_module libexec/apache22/mod_autoindex.so 开启
- 将 Include etc/apache22/extra/httpd-autoindex.conf 启用
- 目录的 Options 必需包含 Indexes
/usr/local/etc/apache22/extra/httpd-autoindex.conf (FreeBSD) IndexOptions FancyIndexing HTMLTable VersionSort FoldersFirst ScanHTMLTitles IndexOptions NameWidth=35 DescriptionWidth=39 IconHeight=16 IconWidth=16 IndexOptions Charset=utf-8
- FancyIndexing --对每种类型的文件前加上一个小图标以示区别
- HTMLTable --允许HTML格式(Apache 2.0.23 and later)
- VersionSort --对同一个软件的多个版本进行排序
- FoldersFirst --文件夹优先显示在前面(Apache 2.0.23 and later)
- ScanHTMLTitles --搜索HTML标题
- NameWidth=35 --定义文件名显示字节数,可以使用 NameWidth=* 来自适应长度
- DescriptionWidth=39 --定义描述显示字节数(Apache 2.0.23 and later)
- IconHeight=16 IconWidth=16 --定义图标大小
- Charset=utf-8 --定义索引页字符编码
- ServerSignature Off --关闭服务器标志
目录别名配置
如将“D:\Documents\My Dropbox\wiki”路径下的wiki目录映射到网站根目录的/wiki/
修改httpd.conf,添加字段:
<Directory "D:/Documents/My Dropbox/wiki"> Options Indexes FollowSymlinks AllowOverride None Order allow,deny Allow from all </Directory>
搜索到<IfModule alias_module>模块,在其中添加
Alias /wiki/ "D:/Documents/My Dropbox/wiki/"
最后重启 Apache 服务
目录密码配置
apache 中禁止一般用户访问后台特定目录
假定 /data/update/admin 为后台管理目录,那么必须设定对该目录访问需要验证
编辑 httpd.conf
<Directory "/data/update/admin"> authtype basic authname "Private" authuserfile /usr/local/www/apache22/auth.dat //保存认证信息的文件 require user username //进行认证的用户名 Options Indexes FollowSymlinks MultiViews AllowOverride None </Directory>
运行命令htpasswd -c auth.dat username 进行密码的设置。
重载apache配置
(For Linux) /etc/init.d/apache2 reload (For Ubuntu) service apache2 reload
Apache 回查特性
- Files 指令是一个容器,让你能基于文件名目标修改某些请求的行为。
- ForceType 指令允许强制将某种 MIME 类型映射到给定实例。
httpd.conf
<Directory "D:/htdocs"> AcceptPathInfo On <Files articles> ForceType application/x-httpd-php </Files> </Directory>
articles 文件
// echo $_SERVER['PATH_INFO']; list($category, $id) = explode("/", $_SERVER['PATH_INFO']); // another example $qs = $_SERVER['QUERY_STRING']; $pos = strrpos($qs, '://'); $pos = strpos($qs, '/', $pos + 4); $_SERVER['REQUEST_URI'] = substr($qs, $pos); $_SERVER['PATH_INFO'] = $_SERVER['REQUEST_URI']; include('index.php');
Ubuntu 特定
配置文件列表
路径 /etc/apache2
apache2.conf envvars mods-available/ sites-available/ httpd.conf mods-enabled/ sites-enabled conf.d/ magic ports.conf
- apache2.conf 默认主配置文件,一般不需更改
- httpd.conf 管理员配置文件,默认空白,创建内容用于覆写 apache2.conf 中的默认配置
- ports.conf IP 及端口设置
- mods-enabled/ 启用的模块目录
- mods-available/ 可用的模块目录
- sites-enabled/ 启用的站点配置文件目录
- sites-availabe/ 可用的站点配置文件目录,包含默认站点和用户自定义虚拟主机
- conf.d/ 其他配置文件目录,如 phpmyadmin.conf
启用与禁用模块
a2enmod rewrite a2dismod rewrite
启用与禁用站点
a2ensite www.example.com a2disstie useless.example.com