# 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
- 詞匯和索引
- 詞匯表
- 指令索引
- 指令速查
- 模塊索引
- 站點導航