如果设置了自定义标头,我想不重定向请求(只是按原样继续处理请求)。其中的htaccess部分如下所示:
RewriteBase /
RewriteCond %{HTTP:My-Header} !=1
RewriteRule ^somefolder/(.*)$ /someAuthentication.php&url=$1 [QSA,R=302,L]
设置标头的身份验证:
header('HTTP/1.1 307 Temporary Redirect'); // ...to prevent browser caching of redirects
header('My-Header: 1');
header('Location: /somefolder/' . $_GET['url']); // ... redirect to previously requested file
但是,如果我,例如重定向到那里的其他一些脚本并使用getallheaders()
检查现有标头,似乎My-Header
未作为请求标头发送,这解释了为什么我只是ERR_TOO_MANY_REDIRECTS
。
我是否误解了标题的用法/定义,错误地设置标题或者htaccess条件是否有问题? 因为在我看来它应该是正确的,例如:
request file
-> if header set
-> ignore redirect (pass through)
-> if header is not set
-> redirect
-> set header
-> redirect to request file
答案 0 :(得分:1)
PHP的header
函数设置响应标头。它是从服务器到客户端的标头。客户端将根据307
响应标头启动重定向。该重定向采用客户端形成的全新HTTP 请求的形式。该请求不包含任何以前的响应标头。
简而言之:在重定向期间,您无法让客户端发送任何一个特定的标题。相反,在URL本身中加入某种标志,这是重定向响应和请求之间唯一保证一致的标志。