2012-06-08 77 views
0

我們在那裏我們使用的Apache 2.2的httpd.conf重寫規則條件採取從查詢字符串參數的情況下,並把它寫在Cookie:如何編碼由mod_rewrite設置的Cookie?

CustomLog "/www/apache/ndipiazza/logs/ssl_request_log" \ 
      "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b \"%{Cookie}i\"" 

RewriteEngine On 
RewriteCond %{QUERY_STRING} CID=(.*) 
RewriteRule .* - [L,CO=COOKIE_CID:%1:ndipiazza-local.com:50000] 

因此,例如,該URL「http://ndipiazza-local/mypage.jsp?CID = NickDogg」創建一個cookie「COOKIE_CID = NickDogg」

但是,我們不能完全使用這個解決方案,因爲我們有一個限制,我們不能存儲這個cookie作爲明文。截至目前,它在日誌中以明文形式寫入,並將cookie寫爲明文。我們需要對它進行編碼。

有沒有辦法讓apache編碼存儲的cookie?

+1

的「PRG」的例子就用jsp這一點。爲此使用htaccess並不是正確的工具。 – Gerben

+0

我們一直在這樣做,但正試圖將其移至Apache HTTPD。 –

回答

1

是的,有一種方法可以做到這一點。

爲此,您希望使用帶有MapType「prg」的RewriteMap。

所以,你會這樣定義

RewriteEngine On 
RewriteMap encode-map prg:/path/to/encode_script 
RewriteCond %{QUERY_STRING} UID=(.*) 
RewriteRule .* - [L, CO=COOKIE_CID:${encode-map:%1}:ndipiazza-local.com:50000] 

的/路徑RewriteMap指令/到/ encode_script是再次起動當Apache啓動您的系統中的腳本,然後獲得新行終止字符串編碼,並具有輸出新行編碼的字符串沒有標準輸出緩衝。

如需進一步信息和例子來看看部分「外部重寫程序」上http://httpd.apache.org/docs/2.0/mod/mod_rewrite.htmlhttp://httpd.apache.org/docs/2.0/rewrite/rewrite_guide.htmlhttp://httpd.apache.org/docs/2.0/rewrite/rewrite_guide_advanced.html