http://www.hesa.ac.ukには、カスタムの404処理スクリプトを使用して、http://www.hesa.ac.uk/pressのユーザーを醜いCMSの1つである実際のURLにリダイレクトしています。http://www.hesa.ac.uk/index.php?option=com_content&task=category§ionid=1&id=1&Itemid=161デフォルトのコンテンツはPHP 5.3.5/IIS7でヘッダーに追加されます
私たちは高速CGIを実行しています。
301ヘッダーが送信され、次にロケーションヘッダーが送信されます。
ユーザーの99%は問題なく動作しますが、一部のユーザーは5〜6秒のローディング時間を報告しています。
<head><title>Document Moved</title></head>
<body><h1>Object Moved</h1>This document may be found <a HREF="http://www.hesa.ac.uk/index.php?option=com_content&task=category&sectionid=1&id=1&Itemid=161">here</a></body>
これは、私たちが見ることができるコード内のどこにも出力されません。これは、リダイレクトに上げている浮遊コンテンツのビットに、私たちが考える、です。私は、コンテンツ出力されるのこの余分なビットを停止する方法を示しているすべてのリソースを見つけることができないよう
/**
* Do the actual redirection to the win URL
*
*/
function doRedirection() {
//start output buffering to trap any content that is output by default by the headers
@ob_start();
//permanently moved header
//header('HTTP/1.1 301 Moved Permanently');
//fast-cgi, so use this:
header('Status: 301 Moved Permanently', true);
@ob_end_clean(); // clear output buffer
//location header
header("Location: ". $this->winUrl);
@ob_end_clean(); // clear output buffer
die();
}
:ここでは、実際のリダイレクトを行う方法があります。私はリダイレクトを行うために、上記の方法に様々なバリエーションを試しました。
誰も同じような問題がありましたか?誰にもアイデアはありますか?
乾杯、
G
EDIT:私たちは、これはIIS7のために期待される動作であることを自覚しましたが、IIS6が同じコードでそれを行うために使用されることはありません、それが期待されますかどうか、私たちのユーザーは不平を言っており、これが問題であるようです。
EDIT 2:このアプローチを放棄して代わりにIIS7のURL書き換え機能に移行することは、PHPクラスの機能をクローンしてIISにプラグインするC#クラスを作成することになります。
EDIT 3:ただし、content-length:0ヘッダーを設定すると役立つ可能性があります。まだテストされていません。