このドキュメントでは
http://docs.joomla.org/Creating_a_Custom_404_Error_Page
リダイレクトすることでカスタム404ページにリダイレクトすることをお勧めします。これにより、最終ページがヘッダー200コードで提供されます。
ただし、このウェブマスターツールの記事
https://support.google.com/webmasters/answer/2409443?ctx=MCE&ctx=S4
404ヘッダーを返すには404エラーページが必要です。
エラーページからJoomlaをもう一度含めようとしました。 curlを使用してカスタムページを取得する以外に、他に何かできることはありますか?
別のURLにリダイレクトするため、これはsoft 404
と呼ばれます。したがって、リダイレクト後の200応答は正しいです。これは、コンテンツが見つからないかどうかを検索エンジンボットが判断できない場合に問題を引き起こします:
次のように404
ファイルのheader
呼び出しにerror.php
応答コードを強制することをお勧めします。
if (($this->error->getCode()) == '404') {
header('Location: /index.php?option=com_content&view=article&id=75', true, 404);
exit;
}
ただし、これは機能しません—主に、ブラウザの動作がこれ以上進まない、またはundefinedのいずれかであることがわかっているためです( 4xxエラー 、 404 ) location
と競合します。 (また、一部のChrome&IEなどは、404コードを表示して独自の「提案」を提示するときに、サーバーによって提供されるコンテンツを無視します)。
したがって、記事からカスタムコンテンツを取得して404を保持するには、そのコンテンツを取得してエラーページに含める必要があるように見えます(テンプレート、メニュー構造などを取得するために、これを実行したいと思います) )。
これが私がerror.phpの一番上に配置したものです
<?php
/**
* @package Joomla.Site
* @subpackage Template.system
* * @copyright Copyright (C) 2005 - 2014 Open Source Matters, Inc. All rights reserved.
* @license GNU General Public License version 2 or later; see LICENSE.txt
*/
defined('_JEXEC') or die;
if (($this->error->getCode()) == '404') {
header('HTTP/1.0 404 Not Found');
$ch = curl_init( JURI::root() . '/404');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
echo curl_exec($ch);
exit;
}
404ヘッダーを返さないJoomlaカスタムソフト404 URLのかなり簡単な修正: