web-dev-qa-db-ja.com

404ページを含む404ヘッダーを返す

このドキュメントでは

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を使用してカスタムページを取得する以外に、他に何かできることはありますか?

4
jdog

別の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エラー404location と競合します。 (また、一部のChrome&IEなどは、404コードを表示して独自の「提案」を提示するときに、サーバーによって提供されるコンテンツを無視します)。

したがって、記事からカスタムコンテンツを取得して404を保持するには、そのコンテンツを取得してエラーページに含める必要があるように見えます(テンプレート、メニュー構造などを取得するために、これを実行したいと思います) )。

2
Craig

これが私が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;
}
2
jdog

404ヘッダーを返さないJoomlaカスタムソフト404 URLのかなり簡単な修正:

https://www.joomlashack.com/blog/joomla/custom-404/

表示: https://www.its-acoustique.fr/john-doe

0
Bruno