Apache-2.2

在 mod_rewrite 設置的 mod_headers 中使用環境變數

  • November 30, 2010

我想要實現的是點擊一個 URL,比如http://myhost/eng/LOGIN/login?BID=12&BFORENAME=C&BSURNAME=C將這些參數作為請求頭插入。參數是固定名稱,所以我可以假設應該總是有這 3 個。

我這樣做的方法是在 httpd.conf 中使用 RewriteRule 設置環境變數,然後使用 RequestHeader 根據環境變數設置標頭。

首先,任何人都可以建議使用的規則,目前我看起來像

RewriteEngine on
RewriteCond %{QUERY_STRING} BID=(.*)&BFORENAME=(.*)&BSURNAME=(.*)
RewriteRule ^(.*) $1? [R,E=VBID:%1,E=VF:%2,E=VS:%3]
RequestHeader set BID "%{VBID}e"
RequestHeader set BF "%{VF}e"
RequestHeader set BS "%{VS}e"

但是我不斷得到一個空頭(或者如果我使用 env=varname 就沒有頭)。

誰能建議我做錯了什麼以及為什麼我似乎無法使用環境變數將值從重寫器傳遞到標頭?

發布後不久,我偶然發現了一個我以前從未見過的Stack Overflow 問題,從而回答了我自己的問題。當使用具有重定向的 RewriteRule 的環境變數時,Apache 通過在名稱前面添加 REDIRECT_ 來更改名稱。

令人沮喪的是,我只是出於測試目的進行重定向,最終我只想將參數擷取為標頭,所以這樣做RewriteRule ^/- 完全避免了這個問題。

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