1

こんにちは、joomla の error.php を作成して、404 エラーなどを joomla の記事にリダイレクトしました。以下のコードは 404 エラーに対して機能しますが、403 は空白のページを返します。スクリプトの外部で直接ページに移動できるため、コードであるか、環境内でインタラクティブである必要があります。

ありがとうスティーブン

defined( '_JEXEC' ) or die( 'Restricted access' );
if ($this->error->code == 404)
{
Header( "HTTP/1.1 404 Not found" );
header("Location: http://www.queensberry.com/misc/filenotfound/");
} else if ($this->error->code == 403) {
Header( "HTTP/1.1 403 Restricted Content" );
Header( "Location: http://www.queensberry.com/restrictedcontent/" ); 
} else {
echo "hello world error code = " . $this->error->code;
}
?>
4

4 に答える 4

6

使用するのではなくHeader("Loaction:...")、「制限されたコンテンツ」ページをinclude()何らかの形でレンダリングしてから終了する必要があります。おそらく、403 を受け取った後、ブラウザーは Location ヘッダーをたどっていません。

于 2009-08-15T01:28:30.390 に答える
5

みんなの助けに感謝しますが、答えは私が望んでいたものとは異なる方向に私を送ってくれました。Joomlaエラーの宛先としてJoomlaのerror.phpファイルを引き続き使用したかったのですが、ページをJoomlaコンテンツにリダイレクトしたいサイトの一部のようにフォーマットする代わりに。

結局、必要なのは出口であることがわかりました。私のスクリプトで。これが、現在機能しているerror.phpです。

defined( '_JEXEC' ) or die( 'Restricted access' );
if ($this->error->code == 404)
{
Header( "HTTP/1.1 404 Not found" );
header("Location: http://www.queensberry.com/misc/filenotfound/");
exit;
} else if ($this->error->code == 403) {
Header( "HTTP/1.1 403 Restricted Content" );
Header( "Location: http://www.queensberry.com/restrictedcontent/" ); 
exit;
} else {
echo "hello world error code = " . $this->error->code;
}
?>
于 2009-08-16T00:01:27.973 に答える
1

Header("Location:") は、新しいページへの標準的なリダイレクトを引き起こしています。403 エラーは、PHP によってレンダリングされたページにある場合にのみ送信されます。したがって、(投稿したコードを使用して)「現在のページは 403 エラーになります」と効果的に言おうとしていますが、まったく別のページにリダイレクトします。403 ヘッダーをhttp://www.queensberry.com/restrictedcontent/に追加すると、うまくいくはずです。404 ヘッダーでも同じことを行う必要があります。

于 2009-08-15T01:49:47.753 に答える
1

(HTTP/1.1 403) の場合、Web ブラウザ(Firefox、IE、Chrome など)は何を無視します。

場所:(bla bla bla)です。

信じないで ?

仮定 :: Joomla サイトからエラー コード 403 を生成する方法を知っているとします。(つまり、エラー コード 403 を生成する joomla_site/bla-bla-bla :: を意味します)

次のように、(error.php ファイルに基づいて) Web サーバーが提供するかどうかを尋ねてみましょう。

... HTTP/1.1 403 制限付きコンテンツの場所: http://www.queensberry.com/restrictedcontent/ ...

それらはあなたのerror.phpファイルに基づいています(つまり、あなたのerror.phpファイルはあなたが望むように機能します

-- telnet 80 で確認

やってみよう

c:\telnet your_host:80

GET bla-bla-bla HTTP/1.1

ホスト: joomla_site

-- これがあなたの好奇心を満たすことを願っています :-)

もう一度繰り返します:

(HTTP/1.1 403) の場合、Web ブラウザ(Firefox、IE、Chrome など)は何を無視します。

場所:(bla bla bla)です。

于 2009-08-22T03:54:56.903 に答える