# Apache模块 mod_alias
| [说明](#calibre_link-11) | 提供从文件系统的不同部分到文档树的映射和URL重定向 |
| --- | --- |
| [状态](#calibre_link-12) | 基本(B) |
| [模块名](#calibre_link-13) | alias_module |
| [源文件](#calibre_link-14) | mod_alias.c |
### 概述
此模块提供的指令可以操控作为请求到达服务器的URL。`Alias`和`ScriptAlias`指令用于在URL和文件系统路径之间实现映射,使不在`DocumentRoot`目录下的内容也能成为文档树的一部分,其中,`ScriptAlias`指令有更多一层的含义,它标明此目标目录下只有CGI脚本。
`Redirect`指令引导客户端以一个不同的URL产生一个新的请求,常用于一个资源被移动到一个新位置的时候。
`mod_alias`被设计成处理普通的URL操作。复杂的URL操作,比如处理请求字符串,请使用`mod_rewrite`提供的强大功能。
## 处理顺序
出现在不同作用域(context)中的别名指令以及重定向指令和其他指令一样,按照标准的[合并规则](#calibre_link-452)进行处理。但是当多个别名指令或重定向指令出现在同一个作用域(context)中的时候(比如在同一个`<VirtualHost>`段),处理顺序就比较特别了:
首先,所有重定向指令都优先于别名指令被处理,因此一个匹配`Redirect`或`RedirectMatch`的请求将永远不会被别名指令处理。其次,别名指令和重定向指令将按照他们在配置文件中出现的先后顺序进行匹配,并由最先匹配到的指令进行处理。
因为这个原因,当两个或两个以上的这些指令作用于同一个子路径时,你必须将最特殊的路径放在最前面,以便所有指令都能正确地生效。例如下面的例子将按照你原本的意愿正常工作:
```
Alias /foo/bar /baz
Alias /foo /gaq
```
但是,如果将上面两条指令的顺序颠倒,则后一条指令永远也得不到匹配的机会。
## Alias 指令
| [说明](#calibre_link-18) | 映射URL到文件系统的特定区域 |
| --- | --- |
| [语法](#calibre_link-19) | `Alias URL-path file-path|directory-path` |
| [作用域](#calibre_link-20) | server config, virtual host |
| [状态](#calibre_link-21) | 基本(B) |
| [模块](#calibre_link-22) | mod_alias |
`Alias`指令使文档可以被存储在`DocumentRoot`以外的本地文件系统中。以(%已解码的)url-path路径开头的URL可以被映射到以directory-path开头的本地文件。
### 示例:
```
Alias /image /ftp/pub/image
```
对"http://myserver/image/foo.gif"的请求,服务器将返回"/ftp/pub/image/foo.gif"文件。因为仅匹配完整路径,所以上述例子不会匹配对"http://myserver/imagefoo.gif"的请求。对于使用正则表达式的匹配,请参见`AliasMatch`指令。
注意:如果url-path中有后缀"/",则服务器要求有后缀"/"以扩展此别名。也就是说"`Alias /icons/ /usr/local/apache/icons/`"并不能对"`/icons`"实现别名。
注意,可能需要额外指定一个`<Directory>`段来覆盖别名的_最终对象_。由于只有出现在`<Directory>`段之前的别名才会被检测,所以它只对最终对象生效。(由于执行别名操作之前`<Location>`段会被首先扫描一次,所以它们也是有效的)
特别地,如果对在`DocumentRoot`之外的某个目录建立了一个`Alias` ,则可能需要明确的对目标目录设定访问权限。
### 示例:
```
Alias /image /ftp/pub/image
<Directory /ftp/pub/image>
Order allow,deny
Allow from all
</Directory>
```
## AliasMatch 指令
| [说明](#calibre_link-18) | 使用正则表达式映射URL到文件系统 |
| --- | --- |
| [语法](#calibre_link-19) | `AliasMatch regex file-path|directory-path` |
| [作用域](#calibre_link-20) | server config, virtual host |
| [状态](#calibre_link-21) | 基本(B) |
| [模块](#calibre_link-22) | mod_alias |
这个指令与`Alias`等效,但是它使用了标准的[正则表达式](#calibre_link-67 "see glossary"),而不是简单的前缀匹配。如果此正则表达式与URL-path相匹配,则服务器会把所匹配的括弧中的字符串替换到该指令所指定的目标字符串中,并视之为一个文件名。例如,要使用"`/icons`"目录,可以:
```
AliasMatch ^/icons(.*) /usr/local/apache/icons$1
```
## Redirect 指令
| [说明](#calibre_link-18) | 发送一个外部重定向使客户端重定向到一个不同的URL |
| --- | --- |
| [语法](#calibre_link-19) | `Redirect [status] URL-path URL` |
| [作用域](#calibre_link-20) | server config, virtual host, directory, .htaccess |
| [覆盖项](#calibre_link-66) | FileInfo |
| [状态](#calibre_link-21) | 基本(B) |
| [模块](#calibre_link-22) | mod_alias |
该指令将一个老URL映射为一个新URL,此新URL被返回到客户端使之重定向到一个新地址。
老_URL-path_是一个(%已解码的)以"/"开头的(网络空间)绝对路径。新_URL_是一个(%已编码的)以"/"开头的(网络空间)绝对路径或者包含协议名和主机名的完整URL。当新_URL_不包含协议名和主机名时将使用与老_URL-path_相同的当前值。
这样,对任何以老_URL-path_开头的请求,将返回一个指向以新_URL_开头的重定向应答。
### 示例:
```
Redirect /service http://foo2.example.com/service
```
如果客户端请求"http://example.com/service/foo.txt",则会被重定向到"http://foo2.example.com/service/foo.txt"。因为仅匹配完整路径,所以上述例子不会匹配"http://example.com/servicefoo.txt"请求。对于使用正则表达式的匹配,请参见`RedirectMatch`指令。
### 注意
重定向指令总是优先于Alias和ScriptAlias指令,而无论他们在配置文件中的顺序如何。
如果没有指定status参数,则重定向是"临时的"(HTTP status 302)。也就是对客户端来说,此资源的位置变动是临时性的。此status参数可以返回以下HTTP状态码:
permanent
返回一个永久性重定向状态码(301),表示此资源的位置变动是永久性的。
temp
返回一个临时性重定向状态码(302),这是默认值。
seeother
返回一个"参见"状态码(303),表示此资源已经被替代。
gone
返回一个"已废弃"状态码(410),表示此资源已经被永久性地删除了。如果指定了这个状态码,则URL参数将被忽略。
status可以被指定为数字状态以返回其他状态码。如果此状态在300-399之间,则必须提供URL参数,否则将被忽略。注意,此状态码必须是Apache已知的(参见http_protocol.c中的`send_error_response`函数)。
### 示例:
```
Redirect permanent /one http://example.com/two
Redirect 303 /three http://example.com/other
```
## RedirectMatch 指令
| [说明](#calibre_link-18) | 基于正则表达式匹配对当前的URL发送一个外部重定向 |
| --- | --- |
| [语法](#calibre_link-19) | `RedirectMatch [status] regex URL` |
| [作用域](#calibre_link-20) | server config, virtual host, directory, .htaccess |
| [覆盖项](#calibre_link-66) | FileInfo |
| [状态](#calibre_link-21) | 基本(B) |
| [模块](#calibre_link-22) | mod_alias |
该指令与`Redirect`等效,但是它使用了标准的[正则表达式](#calibre_link-67 "see glossary"),而不是简单的前缀匹配。如果regex与URL-path相匹配,则服务器会把所匹配的括弧中的字符串替换到该指令所指定的目标字符串中,并视之为一个文件名。例如,重定向所有GIF文件到另一个服务器上同名的JPEG文件,可以:
```
RedirectMatch (.*)\.gif$ http://www.anotherserver.com$1.jpg
```
## RedirectPermanent 指令
| [说明](#calibre_link-18) | 发送一个外部永久重定向使客户端重定向到一个不同的URL |
| --- | --- |
| [语法](#calibre_link-19) | `RedirectPermanent URL-path URL` |
| [作用域](#calibre_link-20) | server config, virtual host, directory, .htaccess |
| [覆盖项](#calibre_link-66) | FileInfo |
| [状态](#calibre_link-21) | 基本(B) |
| [模块](#calibre_link-22) | mod_alias |
此指令告知客户端此重定向是永久性的(status 301)。与"`Redirect permanent`"等效。
## RedirectTemp 指令
| [说明](#calibre_link-18) | 发送一个外部临时重定向使客户端重定向到一个不同的URL |
| --- | --- |
| [语法](#calibre_link-19) | `RedirectTemp URL-path URL` |
| [作用域](#calibre_link-20) | server config, virtual host, directory, .htaccess |
| [覆盖项](#calibre_link-66) | FileInfo |
| [状态](#calibre_link-21) | 基本(B) |
| [模块](#calibre_link-22) | mod_alias |
此指令告知客户端此重定向只是临时性的(status 302)。与"`Redirect temp`"等效。
## ScriptAlias 指令
| [说明](#calibre_link-18) | 映射一个URL到文件系统并视之为CGI脚本 |
| --- | --- |
| [语法](#calibre_link-19) | `ScriptAlias URL-path file-path|directory-path` |
| [作用域](#calibre_link-20) | server config, virtual host |
| [状态](#calibre_link-21) | 基本(B) |
| [模块](#calibre_link-22) | mod_alias |
`ScriptAlias`指令的行为与`Alias`指令相同,但同时它又标明此目录中含有应该由cgi-script处理器处理的CGI脚本。以URL-path开头的(%已解码的)的URL会被映射到由第二个参数指定的具有完整路径名的本地文件系统中的脚本。
### 示例:
```
ScriptAlias /cgi-bin/ /web/cgi-bin/
```
对`http://myserver/cgi-bin/foo`的请求会引导服务器执行`/web/cgi-bin/foo`脚本。
## ScriptAliasMatch 指令
| [说明](#calibre_link-18) | 使用正则表达式映射一个URL到文件系统并视之为CGI脚本 |
| --- | --- |
| [语法](#calibre_link-19) | `ScriptAliasMatch regex file-path|directory-path` |
| [作用域](#calibre_link-20) | server config, virtual host |
| [状态](#calibre_link-21) | 基本(B) |
| [模块](#calibre_link-22) | mod_alias |
该指令与`ScriptAlias`等效,但是它使用了标准的[正则表达式](#calibre_link-67 "see glossary"),而不是简单的前缀匹配。如果regex与URL-path相匹配,则服务器会把所匹配的括弧中的字符串替换到该指令所指定的目标字符串中,并视之为一个文件名。例如,要使用标准的`/cgi-bin` ,可以:
```
ScriptAliasMatch ^/cgi-bin(.*) /usr/local/apache/cgi-bin$1
```
- Apache HTTP Server Version 2.2 文档 [最后更新:2006年3月21日]
- 版本说明
- 从1.3升级到2.0
- 从2.0升级到2.2
- Apache 2.2 新特性概述
- Apache 2.0 新特性概述
- The Apache License, Version 2.0
- 参考手册
- 编译与安装
- 启动Apache
- 停止和重启
- 配置文件
- 配置段(容器)
- 缓冲指南
- 服务器全局配置
- 日志文件
- 从URL到文件系统的映射
- 安全方面的提示
- 动态共享对象(DSO)支持
- 内容协商
- 自定义错误响应
- 地址和端口的绑定(Binding)
- 多路处理模块
- Apache的环境变量
- Apache处理器的使用
- 过滤器(Filter)
- suEXEC支持
- 性能方面的提示
- URL重写指南
- Apache虚拟主机文档
- 基于主机名的虚拟主机
- 基于IP地址的虚拟主机
- 大批量虚拟主机的动态配置
- 虚拟主机示例
- 深入研究虚拟主机的匹配
- 文件描述符限制
- 关于DNS和Apache
- 常见问题
- 经常问到的问题
- Apache的SSL/TLS加密
- SSL/TLS高强度加密:绪论
- SSL/TLS高强度加密:兼容性
- SSL/TLS高强度加密:如何...?
- SSL/TLS Strong Encryption: FAQ
- 如何.../指南
- 认证、授权、访问控制
- CGI动态页面
- 服务器端包含入门
- .htaccess文件
- 用户网站目录
- 针对特定平台的说明
- 在Microsoft Windows中使用Apache
- 在Microsoft Windows上编译Apache
- Using Apache With Novell NetWare
- Running a High-Performance Web Server on HPUX
- The Apache EBCDIC Port
- 服务器和支持程序
- httpd - Apache超文本传输协议服务器
- ab - Apache HTTP服务器性能测试工具
- apachectl - Apache HTTP服务器控制接口
- apxs - Apache 扩展工具
- configure - 配置源代码树
- dbmmanage - 管理DBM格式的用户认证文件
- htcacheclean - 清理磁盘缓冲区
- htdbm - 操作DBM密码数据库
- htdigest - 管理用于摘要认证的用户文件
- httxt2dbm - 生成RewriteMap指令使用的dbm文件
- htpasswd - 管理用于基本认证的用户文件
- logresolve - 解析Apache日志中的IP地址为主机名
- rotatelogs - 滚动Apache日志的管道日志程序
- suexec - 在执行外部程序之前切换用户
- 其他程序
- 杂项文档
- 与Apache相关的标准
- Apache模块
- 描述模块的术语
- 描述指令的术语
- Apache核心(Core)特性
- Apache MPM 公共指令
- Apache MPM beos
- Apache MPM event
- Apache MPM netware
- Apache MPM os2
- Apache MPM prefork
- Apache MPM winnt
- Apache MPM worker
- Apache模块 mod_actions
- Apache模块 mod_alias
- Apache模块 mod_asis
- Apache模块 mod_auth_basic
- Apache模块 mod_auth_digest
- Apache模块 mod_authn_alias
- Apache模块 mod_authn_anon
- Apache模块 mod_authn_dbd
- Apache模块 mod_authn_dbm
- Apache模块 mod_authn_default
- Apache模块 mod_authn_file
- Apache模块 mod_authnz_ldap
- Apache模块 mod_authz_dbm
- Apache模块 mod_authz_default
- Apache模块 mod_authz_groupfile
- Apache模块 mod_authz_host
- Apache模块 mod_authz_owner
- Apache模块 mod_authz_user
- Apache模块 mod_autoindex
- Apache模块 mod_cache
- Apache模块 mod_cern_meta
- Apache模块 mod_cgi
- Apache模块 mod_cgid
- Apache模块 mod_charset_lite
- Apache模块 mod_dav
- Apache模块 mod_dav_fs
- Apache模块 mod_dav_lock
- Apache模块 mod_dbd
- Apache模块 mod_deflate
- Apache模块 mod_dir
- Apache模块 mod_disk_cache
- Apache模块 mod_dumpio
- Apache模块 mod_echo
- Apache模块 mod_env
- Apache模块 mod_example
- Apache模块 mod_expires
- Apache模块 mod_ext_filter
- Apache模块 mod_file_cache
- Apache模块 mod_filter
- Apache模块 mod_headers
- Apache模块 mod_ident
- Apache模块 mod_imagemap
- Apache模块 mod_include
- Apache模块 mod_info
- Apache模块 mod_isapi
- Apache模块 mod_ldap
- Apache模块 mod_log_config
- Apache模块 mod_log_forensic
- Apache模块 mod_logio
- Apache模块 mod_mem_cache
- Apache模块 mod_mime
- Apache模块 mod_mime_magic
- Apache模块 mod_negotiation
- Apache模块 mod_nw_ssl
- Apache模块 mod_proxy
- Apache模块 mod_proxy_ajp
- Apache模块 mod_proxy_balancer
- Apache模块 mod_proxy_connect
- Apache模块 mod_proxy_ftp
- Apache模块 mod_proxy_http
- Apache模块 mod_rewrite
- Apache模块 mod_setenvif
- Apache模块 mod_so
- Apache模块 mod_speling
- Apache模块 mod_ssl
- Apache模块 mod_status
- Apache模块 mod_suexec
- Apache模块 mod_unique_id
- Apache模块 mod_userdir
- Apache模块 mod_usertrack
- Apache模块 mod_version
- Apache模块 mod_vhost_alias
- Developer Documentation for Apache 2.0
- Apache 1.3 API notes
- Debugging Memory Allocation in APR
- Documenting Apache 2.0
- Apache 2.0 Hook Functions
- Converting Modules from Apache 1.3 to Apache 2.0
- Request Processing in Apache 2.0
- How filters work in Apache 2.0
- Apache 2.0 Thread Safety Issues
- 词汇和索引
- 词汇表
- 指令索引
- 指令速查
- 模块索引
- 站点导航