POST経由でコンテンツを直接受け取る単純なpastebinアプリケーションを構築しようとしているので、cURLを使用して(「-F」パラメータを使用して)ターミナル経由でファイルをアップロードするだけです。Lighttpd (1.4) が「417 - Expectation Failed」エラーを生成し、cURL を使用できないため、PHP-FPM を使用して nginx にセットアップしようとしています。書き換えルールの使用を避けるために、すべての 404 エラーを「index.php」にリダイレクトして処理します。しかし、ステータス コードを正しく設定できず、その理由がわかりません。ここに、私がやろうとしていることを含むいくつかのPHP/疑似コードがあります:
header('Status: 200 OK'); // Change it to 200, as the request could came via a 404 error.
if (there_is_not_a_parameter_in_the_url()) {
if (file_is_in_POST()) save_file();
else {
header('Status: 301 Moved Permanently');
redirect_user_to_other_page(); // It's not possible to post a file from web, only directly by sending a POST request
}
}
else {
if (entry_does_not_exists()) {
header('Status: 404 Not Found');
show_404_page();
}
else show_entry();
}
show_entry()
関数が呼び出されると、最初に変更されたため、ステータス コードは になります200
。しかし、私はまだ404
ステータスコードを取得しています。正しく変更されているのは、呼び出し301
の前にに設定しようとしたときだけです。redirect_user_to_other_page()
誰かが私が間違っていることを見ていますか?