.htaccess可以根据{HTTP:Content-Length}做不同的事情吗?

我有一个接受来自第三方的HTTP POST的服务器,然后返回一个200或500。

第三方不受我控制,有时会发送非常大的POST,例如40MB。

这些POST导致我的PHP代码耗尽内存,我无法赶上,所以Apache发送500。

API重试该POST永远,并不会发送新的数据,所以这是一个问题。

我已经尝试了各种各样的东西,但是最终以为如果我可以让.htaccess返回一个200,并且什么都不做,如果content_length> X,那么这至less会让我花时间去重构它的工作原理。

所以…

是否有可能在.htaccess中编写规则,如果content_length> X,则返回200?

不喜欢伪造“一切OK”的想法。 根据您的环境,您可能有多种方法:

  1. 增加内存PHP一般可以使用的内存( php_value memory_limit 100M .htaccess或类似php.ini
  2. 增加内存PHP只能用于这个客户端。 试试像这样(未经testing, 192.168.1.0/24是远程系统的地址):

     <If "-R '192.168.1.0/24'"> php_value memory_limit 100M </If> 
  3. 如果一切都失败,请使用你的想法,如下所示:

     RewriteCond %{HTTP:Content-Length} -ge 200000 RewriteRule ^ - [R=200] 

    这也是未经testing的,不太可能按原样工作,但其核心是RewriteCond %{HTTP:Content-Length}部分。