Php 下载开始后的HTTP新位置

Php 下载开始后的HTTP新位置,php,http,nginx,Php,Http,Nginx,我使用X-Accel-Redirect(隐式nginx)、内容类型和内容配置下载文件,一切都很好 我需要完成的是在下载开始后重定向到一个新的位置 我已经测试了刷新和位置,它不起作用。使用HTTP 1.1/nginx是否可能 附录 我正在寻找一种只使用HTTP的方法。没有javascript,没有 下载在处理POST表单后开始。我会将原始下载链接更改为在新窗口(target=“\u blank”)中打开,并使用javascript重定向。基于此,您可以尝试几种变体。一旦Nginx已经发送响应,就不

我使用X-Accel-Redirect(隐式nginx)、内容类型和内容配置下载文件,一切都很好

我需要完成的是在下载开始后重定向到一个新的位置

我已经测试了刷新和位置,它不起作用。使用HTTP 1.1/nginx是否可能

附录

我正在寻找一种只使用HTTP的方法。没有javascript,没有


下载在处理POST表单后开始。

我会将原始下载链接更改为在新窗口(
target=“\u blank”
)中打开,并使用javascript重定向。基于此,您可以尝试几种变体。

一旦Nginx已经发送响应,就不可能了。因此,唯一的方法似乎是从您在
X-Accel-Redirect
中引用的Nginx位置返回
302 Redirect

<?php

header('refresh:5;url=http://www.google.com/');
header('Content-type: application/pdf');
header('Content-Disposition: attachment; filename="file.pdf"');
readfile('file.pdf');
您如何告诉Nginx这样做? 最好的方法是从应用程序向Nginx(连同XAR)传递一个自定义头

如何在Nginx中触发处理? 您可以使用变量
$http\u variable
轻松获取头的值,因此Nginx的典型配置如下

if ($http_your_header) {
  rewrite ^ http://your_redirect redirect;
}

有关更多信息,请参阅和。

readfile()使PHP毫无意义地工作。我想为这项工作使用正确的工具,正如我已经使用nginx的X-Accel-Redirect所做的那样。我如何从我的应用程序(发出X-Accel-Redirect)中指示nginx获取一个参数(在本例中是从我的应用程序中),并在开始服务该资源后执行302操作?同样,不涉及PHP或nginx之外的任何其他“用户代码”。除此之外,我+1它,因为它与我实际要求的最接近。将自定义头传递给Nginx(连同XAR)如何在Nginx中使用该头的值并使用它执行302?
if($http\u your\u头){rewrite^http://your_redirect 重定向;}
请参阅,谢谢。你也可以把它写在答案里。