【发布时间】:2017-12-10 14:56:32
【问题描述】:
我有以下(简化的)文件夹/文件结构:
/.htaccess
/test.php
/api/web/index.php
以及 apache config 中的以下指令:
<IfModule mod_deflate.c>
<IfModule mod_filter.c>
SetInputFilter DEFLATE
</IfModule>
</IfModule>
我正在发送一个 POST 请求,其中包含一个带有适当标头的压缩正文:
POST /test.php HTTP/1.1
Host: 192.168.1.248
Authorization: Bearer ed717c077e4bf81201196011adb457731b24e19d
Content-Type: application/json
Content-Encoding: gzip
我对 .htaccess 文件有以下配置:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^api/(.*) api/web/index.php/$1 [NC,L]
问题是,如果我向/test.php 发帖,一切都会按预期进行,正文已泄气,我可以正确访问解压缩的内容。
但是,如果我发布到被重定向的内容(/api/ 或 /api/v1/project),index.php 脚本不会解压缩正文。
我认为它必须与忽略SetInputFilter 指令的RewriteRule 指令有关,但是,我怎样才能避免这种情况呢?
我尝试直接在 .htaccess 中添加 SetInputFilter 指令,但没有解决问题(可能是位置不对?)。
你知道我该如何解决这个问题吗?
【问题讨论】:
-
您是否检查过以确保您在虚拟主机配置中设置了
AllowOverride All? -
@HalfCrazed AllowOverride All 处于活动状态。而且我认为它工作正常,因为我在 .htaccess 中定义的重定向正在工作,但忽略了它在 apache.conf 文件中的 SetInputFilter 指令。
-
我也遇到了这个问题。请问有没有人提出解决方案?
-
@FrederickZhang 我在 Apache 邮件列表 (mail-archives.apache.org/mod_mbox/httpd-users/201707.mbox/…) 和论坛 (apachelounge.com/viewtopic.php?t=7686) 上发布了这个问题,但没有成功。我选择自己给身体放气,但我仍然相信 Apache 的解决方案会在未来某个时候出现:)
-
/api/web/是什么?一个已知的 CMS 还是你自己的东西?事实上,POST数据在重写时与请求一起传递,我猜对于解压缩的内容应该是相同的。另外,你检查你的服务器日志了吗?你可能会在那里发现一些有趣的东西
标签: php apache .htaccess mod-rewrite mod-deflate