Apache HTTP Server 版本2.2
說明 | 提供從文件系統(tǒng)的不同部分到文檔樹的映射和URL重定向 |
---|---|
狀態(tài) | 基本(B) |
模塊名 | alias_module |
源文件 | mod_alias.c |
此模塊提供的指令可以操控作為請求到達(dá)服務(wù)器的URL。Alias
和ScriptAlias
指令用于在URL和文件系統(tǒng)路徑之間實(shí)現(xiàn)映射,使不在DocumentRoot
目錄下的內(nèi)容也能成為文檔樹的一部分,其中,ScriptAlias
指令有更多一層的含義,它標(biāo)明此目標(biāo)目錄下只有CGI腳本。
Redirect
指令引導(dǎo)客戶端以一個不同的URL產(chǎn)生一個新的請求,常用于一個資源被移動到一個新位置的時候。
mod_alias
被設(shè)計成處理普通的URL操作。復(fù)雜的URL操作,比如處理請求字符串,請使用mod_rewrite
提供的強(qiáng)大功能。
出現(xiàn)在不同作用域(context)中的別名指令以及重定向指令和其他指令一樣,按照標(biāo)準(zhǔn)的合并規(guī)則進(jìn)行處理。但是當(dāng)多個別名指令或重定向指令出現(xiàn)在同一個作用域(context)中的時候(比如在同一個<VirtualHost>
段),處理順序就比較特別了:
首先,所有重定向指令都優(yōu)先于別名指令被處理,因此一個匹配Redirect
或RedirectMatch
的請求將永遠(yuǎn)不會被別名指令處理。其次,別名指令和重定向指令將按照他們在配置文件中出現(xiàn)的先后順序進(jìn)行匹配,并由最先匹配到的指令進(jìn)行處理。
因?yàn)檫@個原因,當(dāng)兩個或兩個以上的這些指令作用于同一個子路徑時,你必須將最特殊的路徑放在最前面,以便所有指令都能正確地生效。例如下面的例子將按照你原本的意愿正常工作:
Alias /foo/bar /baz
Alias /foo /gaq
但是,如果將上面兩條指令的順序顛倒,則后一條指令永遠(yuǎn)也得不到匹配的機(jī)會。
說明 | 映射URL到文件系統(tǒng)的特定區(qū)域 |
---|---|
語法 | Alias URL-path
file-path|directory-path |
作用域 | server config, virtual host |
狀態(tài) | 基本(B) |
模塊 | mod_alias |
Alias
指令使文檔可以被存儲在DocumentRoot
以外的本地文件系統(tǒng)中。以(%已解碼的)url-path路徑開頭的URL可以被映射到以directory-path開頭的本地文件。
Alias /image /ftp/pub/image
對"http://myserver/image/foo.gif"的請求,服務(wù)器將返回"/ftp/pub/image/foo.gif"文件。因?yàn)閮H匹配完整路徑,所以上述例子不會匹配對"http://myserver/imagefoo.gif"的請求。對于使用正則表達(dá)式的匹配,請參見AliasMatch
指令。
注意:如果url-path中有后綴"/",則服務(wù)器要求有后綴"/"以擴(kuò)展此別名。也就是說"Alias /icons/ /usr/local/apache/icons/
"并不能對"/icons
"實(shí)現(xiàn)別名。
注意,可能需要額外指定一個<Directory>
段來覆蓋別名的最終對象。由于只有出現(xiàn)在<Directory>
段之前的別名才會被檢測,所以它只對最終對象生效。(由于執(zhí)行別名操作之前<Location>
段會被首先掃描一次,所以它們也是有效的)
特別地,如果對在DocumentRoot
之外的某個目錄建立了一個Alias
,則可能需要明確的對目標(biāo)目錄設(shè)定訪問權(quán)限。
Alias /image /ftp/pub/image
<Directory /ftp/pub/image>
Order allow,deny
Allow from all
</Directory>
說明 | 使用正則表達(dá)式映射URL到文件系統(tǒng) |
---|---|
語法 | AliasMatch regex file-path|directory-path |
作用域 | server config, virtual host |
狀態(tài) | 基本(B) |
模塊 | mod_alias |
這個指令與Alias
等效,但是它使用了標(biāo)準(zhǔn)的正則表達(dá)式,而不是簡單的前綴匹配。如果此正則表達(dá)式與URL-path相匹配,則服務(wù)器會把所匹配的括弧中的字符串替換到該指令所指定的目標(biāo)字符串中,并視之為一個文件名。例如,要使用"/icons
"目錄,可以:
AliasMatch ^/icons(.*) /usr/local/apache/icons$1
說明 | 發(fā)送一個外部重定向使客戶端重定向到一個不同的URL |
---|---|
語法 | Redirect [status] URL-path
URL |
作用域 | server config, virtual host, directory, .htaccess |
覆蓋項(xiàng) | FileInfo |
狀態(tài) | 基本(B) |
模塊 | mod_alias |
該指令將一個老URL映射為一個新URL,此新URL被返回到客戶端使之重定向到一個新地址。
老URL-path是一個(%已解碼的)以"/"開頭的(網(wǎng)絡(luò)空間)絕對路徑。新URL是一個(%已編碼的)以"/"開頭的(網(wǎng)絡(luò)空間)絕對路徑或者包含協(xié)議名和主機(jī)名的完整URL。當(dāng)新URL不包含協(xié)議名和主機(jī)名時將使用與老URL-path相同的當(dāng)前值。
這樣,對任何以老URL-path開頭的請求,將返回一個指向以新URL開頭的重定向應(yīng)答。
Redirect /service http://foo2.example.com/service
如果客戶端請求"http://example.com/service/foo.txt",則會被重定向到"http://foo2.example.com/service/foo.txt"。因?yàn)閮H匹配完整路徑,所以上述例子不會匹配"http://example.com/servicefoo.txt"請求。對于使用正則表達(dá)式的匹配,請參見RedirectMatch
指令。
重定向指令總是優(yōu)先于Alias和ScriptAlias指令,而無論他們在配置文件中的順序如何。
如果沒有指定status參數(shù),則重定向是"臨時的"(HTTP status 302)。也就是對客戶端來說,此資源的位置變動是臨時性的。此status參數(shù)可以返回以下HTTP狀態(tài)碼:
status可以被指定為數(shù)字狀態(tài)以返回其他狀態(tài)碼。如果此狀態(tài)在300-399之間,則必須提供URL參數(shù),否則將被忽略。注意,此狀態(tài)碼必須是Apache已知的(參見http_protocol.c中的send_error_response
函數(shù))。
Redirect permanent /one http://example.com/two
Redirect 303 /three http://example.com/other
說明 | 基于正則表達(dá)式匹配對當(dāng)前的URL發(fā)送一個外部重定向 |
---|---|
語法 | RedirectMatch [status] regex URL |
作用域 | server config, virtual host, directory, .htaccess |
覆蓋項(xiàng) | FileInfo |
狀態(tài) | 基本(B) |
模塊 | mod_alias |
該指令與Redirect
等效,但是它使用了標(biāo)準(zhǔn)的正則表達(dá)式,而不是簡單的前綴匹配。如果regex與URL-path相匹配,則服務(wù)器會把所匹配的括弧中的字符串替換到該指令所指定的目標(biāo)字符串中,并視之為一個文件名。例如,重定向所有GIF文件到另一個服務(wù)器上同名的JPEG文件,可以:
RedirectMatch (.*)\.gif$ http://www.anotherserver.com$1.jpg
說明 | 發(fā)送一個外部永久重定向使客戶端重定向到一個不同的URL |
---|---|
語法 | RedirectPermanent URL-path URL |
作用域 | server config, virtual host, directory, .htaccess |
覆蓋項(xiàng) | FileInfo |
狀態(tài) | 基本(B) |
模塊 | mod_alias |
此指令告知客戶端此重定向是永久性的(status 301)。與"Redirect permanent
"等效。
說明 | 發(fā)送一個外部臨時重定向使客戶端重定向到一個不同的URL |
---|---|
語法 | RedirectTemp URL-path URL |
作用域 | server config, virtual host, directory, .htaccess |
覆蓋項(xiàng) | FileInfo |
狀態(tài) | 基本(B) |
模塊 | mod_alias |
此指令告知客戶端此重定向只是臨時性的(status 302)。與"Redirect temp
"等效。
說明 | 映射一個URL到文件系統(tǒng)并視之為CGI腳本 |
---|---|
語法 | ScriptAlias URL-path file-path|directory-path |
作用域 | server config, virtual host |
狀態(tài) | 基本(B) |
模塊 | mod_alias |
ScriptAlias
指令的行為與Alias
指令相同,但同時它又標(biāo)明此目錄中含有應(yīng)該由cgi-script處理器處理的CGI腳本。以URL-path開頭的(%已解碼的)的URL會被映射到由第二個參數(shù)指定的具有完整路徑名的本地文件系統(tǒng)中的腳本。
ScriptAlias /cgi-bin/ /web/cgi-bin/
對http://myserver/cgi-bin/foo
的請求會引導(dǎo)服務(wù)器執(zhí)行/web/cgi-bin/foo
腳本。
說明 | 使用正則表達(dá)式映射一個URL到文件系統(tǒng)并視之為CGI腳本 |
---|---|
語法 | ScriptAliasMatch regex file-path|directory-path |
作用域 | server config, virtual host |
狀態(tài) | 基本(B) |
模塊 | mod_alias |
該指令與ScriptAlias
等效,但是它使用了標(biāo)準(zhǔn)的正則表達(dá)式,而不是簡單的前綴匹配。如果regex與URL-path相匹配,則服務(wù)器會把所匹配的括弧中的字符串替換到該指令所指定的目標(biāo)字符串中,并視之為一個文件名。例如,要使用標(biāo)準(zhǔn)的/cgi-bin
,可以:
ScriptAliasMatch ^/cgi-bin(.*) /usr/local/apache/cgi-bin$1