Sun Java System Web Server 7.0 管理員指南

使用常規表示式進行 URL 重新導向

Sun Java System Web Server 7.0 已增強為可在配置檔案中支援常規表示式 (又稱為式樣) 以及請求時間參數內插法。此外,萬用字元式樣相符支援已延伸至 server.xml。URL 重新導向以 SAF 形式實作。重新導向 SAF 可讓您重新導向符合特定前綴的 URI。您可以使用 from 參數來指定前綴,並使用 urlurl-prefix 參數來指定重新導向至的 URL。在 Sun Java System Web Server 7.0 中,from 參數是可選擇的。如果省略 from,則會重新導向所有 URI。

在 obj.conf 檔案中,新的 <If><Elseif><Else> 標記支援 SAF 參數。請參閱附錄 - obj.conf - 語法與用法。這些標記包括指令。使用這些標記可定義執行這些指令的條件。 這些標記也可用於動態產生 SAF 參數。

Sun Java System Web Server 7.0 提供 URL 重新寫入功能,該功能為 Apache HTTP 伺服器之 mod_rewrite 模組的超集合。<If> 標記與 Apache 的 mod_rewrite 功能不同,可提供以下功能:

請看以下指令:


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 重新導向。在 Sun Java System Web Server 7.0 中,您也可以增加 status="301" 參數,以指出您需要 301 Moved Permanently 重新導向。


NameTrans fn="redirect" from="/path" url="http://server.example.com" status="301"