2012-06-08 4 views
0

У нас есть сценарий, где мы используем условие правила переписан в Apache 2.2 в httpd.conf, чтобы взять параметр из строки запроса, и записать его как Cookie:Как кодировать файлы cookie, установленные mod_rewrite?

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] 

Так, например, The URL «http: //ndipiazza-local/mypage.jsp? CID = NickDogg» Создает файл cookie «COOKIE_CID = NickDogg»

Однако мы не можем использовать это решение, потому что у нас есть ограничение, что мы не можем хранить это cookie как текст. На данный момент он записывает в журнал как чистый текст и записывает cookie как чистый текст. Нам нужно его закодировать.

Есть ли способ сделать apache кодировкой хранимого файла?

+1

Просто используйте JSP для этого. Использование htaccess для этого - не совсем правильный инструмент. – Gerben

+0

Мы это делали, но пытаемся перенести это на Apache HTTPD. –

ответ

1

Да, есть способ сделать это.

Для этого вы хотите использовать RewriteMap с 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] 

Параметр/путь/к/encode_script это скрипт на вашей системе, которая запускается один раз, когда в момент запуска Apache, а затем получает новую строку завершается строки для кодирования и должен выводить строки, закодированные новой строкой, без буферизации stdout.

Для получения дополнительной информации и примеров смотрите в разделе «Внешнее переписывание программы» на http://httpd.apache.org/docs/2.0/mod/mod_rewrite.html и «PRG» примеры на http://httpd.apache.org/docs/2.0/rewrite/rewrite_guide.html и http://httpd.apache.org/docs/2.0/rewrite/rewrite_guide_advanced.html

Смежные вопросы