RewriteRule [E = CONTENT_TYPE: foo / bar] não tem efeito no Apache / mod_php

2

Eu estava tentando evitar que o PHP analisasse solicitações POST. Faz automaticamente quando vê o tipo MIME de acordo. Por isso eu estava pensando em seguir o hack RewriteRule:

RewriteCond %{HTTP:Content-Type} ^(multipart/form-data\s*;.*)$   
RewriteRule mime.php - [E=CONTENT_TYPE:no/parsing;old=%1]

Mas o ambiente CGI ainda contém o original [CONTENT_TYPE] => multipart/form..

  • eu poderia definir, por exemplo ALT_CONTENT_TYPE sem problemas, mas isso não é útil para mim, porque o PHP ainda age no original.
  • Da mesma forma, alterar o caso [E=ContEnt_Type] não removerá o valor do cabeçalho antigo, apenas altera o caso realmente.
  • A var do env CONTENT_TYPE é construída em um estágio posterior? Porque também tive problemas em acessá-lo como apenas% {CONTENT_TYPE}. Mas em uma segunda olhada, os documentos link não mencionaram de qualquer maneira.

Existe outra maneira de substituir esta variável CGI?

local testserver:

 Server version: Apache/2.2.14 (Ubuntu)
 mod_php, not fastcgi
 Linux snig 2.6.32-29-generic #58-Ubuntu SMP, 2011 x86_64 GNU/Linux
    
por mario 09.04.2011 / 19:03

1 resposta

4

Esta resposta sugere uma solução do Apache:

<Location "/backend/XXX.php">
    SetEnvIf Content-Type ^(multipart/form-data)(.*) NEW_CONTENT_TYPE=multipart/form-data-alternate$2 OLD_CONTENT_TYPE=$1$2
    RequestHeader set Content-Type %{NEW_CONTENT_TYPE}e env=NEW_CONTENT_TYPE
</Location> 
    
por 12.04.2011 / 23:26