Mod-Rewrite

在 mod_rewrite 中轉發原始 URI

  • April 30, 2014

我正在嘗試使用 mod_rewrite 並以某種方式轉發 - 最好通過標頭 - 將原始 URI 轉發到我的應用程序伺服器。

我真正堅持的是如何在客戶端重定向到應用程序伺服器後獲取我發送的資訊以從客戶端繼承。

我想出的唯一方法是使用原始 URI 傳遞一個 get 請求,但這看起來很難看。

注意 - 我已經在 Apache 中查看了重定向、更改 URL 或將 HTTP 重定向到 HTTPS - 關於 Mod_Rewrite 規則你想知道但不敢問瘋狂的一切高級 Mod_Rewrite 調試教程

我可能忽略了一些東西;如果是這樣,請給我正確的術語並作為副本關閉。:)

編輯:

mod_rewrite 正在使用 302 重定向到應用程序伺服器。實際的重定向是客戶端。有些域匹配,有些則不匹配。我的規則的基本語法如下所示。

RewriteCond %{HTTP_HOST} mydomain|myalias
RewriteRule ^ http://www.mydomain.org... [R=301,L]

在重寫規則的開頭,將 URI 保存到變數中。我將其稱為 ORIGINAL_URI。

RewriteRule (.*) - [E=ORIGINAL_URI:$1]

Apache 是否直接將此請求傳遞給應用程序伺服器?如果是這樣,請將自定義標頭(我將其稱為 Original-URI)設置為該變數的值。

RequestHeader set "Original-URI" "%{ORIGINAL_URI}e"

Apache 是否將重定向發送回客戶端,然後客戶端會發出新請求?只要域保持不變,您就可以告訴客戶端設置 cookie。

Header set Set-Cookie "Original-URI=%{ORIGINAL_URI}e"

引用自:https://serverfault.com/questions/592129