Web 伺服器 已增強為可在配置檔案中支援常規表示式 (又稱為樣式) 以及請求時間參數內插法。此外,萬用字元樣式相符支援已延伸至 server.xml。URL 重新導向以 SAF 形式實作。重新導向 SAF 可讓您重新導向符合特定前綴的 URI。您可以使用 from 參數來指定前綴,並使用 url 或 url-prefix 參數來指定重新導向至的 URL。在 Web 伺服器 中,from 是選擇性參數。如果省略 from,則會重新導向所有 URI。
在 obj.conf 檔案中,新的 <If>、<Elseif> 和 <Else> 標記支援 SAF 參數。這些標記包括指令。使用這些標記可定義執行這些指令的條件。 這些標記也可用於動態產生 SAF 參數。
Web 伺服器 提供 URL 重新寫入功能,該功能為 Apache HTTP 伺服器之 mod_rewrite 模組的超集合。<If> 標記與 Apache 的 mod_rewrite 功能不同,可提供以下功能:
此標記可以處理 URI、路徑、標頭欄位以及回應內文。
此標記可在處理請求的任何階段進行作業。
此標記可搭配任何 SAF (包括協力廠商外掛程式) 使用。
請看以下指令:
NameTrans fn="redirect" from="/site1" url="http://site1.mycompany.com" |
可以使用常規表示式重寫上述指令,如下所示:
<If $uri =~ '^/site1'> NameTrans fn="redirect" url="http://site1.mycompany.com" </If> |
在上述程式碼片段中,請注意此處使用常規表示式代替 from 參數。如果您需要將所有對 /site1/* 的請求重新導向至 http://site1.mycompany.com/*/index.html,請注意此方法:
<If $uri =~ '^/site1/(.*)'> NameTrans fn="redirect" url="http://site1.mycompany.com/$1/index.html" </If> |
在此,<If> 標記會指定任何符合 (.*) 的值給變數 $1。來自原始請求的值將動態替代 url 參數中的 $1。這就表示上述 obj.conf 程式碼片段會使對 /site1/download 的請求被重新導向至 http://site1.mycompany.com.com/download/index.html。
<If> 與 redirect 結合後能獲得 mod_rewrite 的靈活性。但是,<If> 與 mod_rewrite 不同,除了重新導向與重新寫入 URL 之外還有其他用途。<If> 也可以與任何 ASF (包括協力廠商外掛程式) 搭配使用。
上述方法可配置 302 Moved Temporarily 重新導向。在 Web 伺服器 中,您也可以增加 status="301" 參數,以指出您需要 301 Moved Permanently 重新導向。
NameTrans fn="redirect" from="/path" url="http://server.example.com" status="301" |