Joomla Webサイトがページ404を正しくレンダリングしません

画像



訪問者をサイトにとどめるためには、HTTP / 1.0 404およびその他の同様のコードを適切に処理する必要があることが知られています。 インターネット上には、404ページの面白い例やマニュアルが多数あります。訪問者と検索エンジンの両方で、サイトで404エラーを正しく処理する方法と方法を見つけてください。



Joomlaサイトの404問題について話し合いたいと思います。



HTTP / 1.0 404を処理するためのJoomlaの設定に関する一般的な推奨事項



ここでは、特定の手順と設定のすべての理由を繰り返すことはしません。 インターネット見つけられるものを簡単にリストします



  1. Joomlaで「美しいページ404」を作成します。 いくつかの可能なものがあります-特別なロジックを実装するときと、それらを選択する方法

    来客
  2. メインのフロントエンドテンプレートとしてサイトで使用されるテンプレートでは、システムシステムテンプレートからファイルerror.phpを書き換えます。
  3. 次に、次のロジックに従うようにこのファイルを編集します。404エラーをキャッチした場合は、最初にHTTP / 1.0 404ヘッダーを表示してから、前に準備したページを発行します。 「美しい404ページ」の番号(ID)が1001であるとします。テンプレートのerror.phpファイルは次のようになります。


defined('_JEXEC') or die; if (!isset($this->error)) { $this->error = JError::raiseWarning(404, JText::_('JERROR_ALERTNOAUTHOR')); $this->debug = false; } // Get language and direction $doc = JFactory::getDocument(); $app = JFactory::getApplication(); $this->language = $doc->language; $this->direction = $doc->direction; if($this->error->getCode()=='404') { header("HTTP/1.0 404 Not Found"); header('Location: index.php?option=com_content&view=article&id=1001'); }
      
      





確認してください。 サイトのアドレスを入力します。 次は/文字の後のabracadabraです。 動作しますか? 期待どおりに機能します。



キャッチは何ですか?



お気に入りのブラウザ(私のお気に入りのブラウザはFirebugを搭載したFitefox)、[ネットワーク]タブでページデバッグを開き、ブラウザがサイトと通信するヘッダーを確認します。



サイトアドレスを入力-HTTP / 1.0ヘッダー200 OK



今abracadabra ... HTTP / 1.0 400が見つかりません-ヘッダーを見てください:



  1. 最初のHTTP / 1.0 302が見つかりました
  2. 次に、美しいページがHTTP / 1.0コード200 OKでブラウザに表示されます


画像



なぜこれが悪いのですか?



「しかし、結局のところ、それは機能しますか?」 -あなたは言います。 はい、そうです。 そして、検索エンジンはそれをどのように見ていますか?



サイトのあるセクション(フォルダー)から別のセクションにサイトページを移動しました。 しかし、すべてのページを移動する必要はありませんでした。 サイトの古いセクションのページがインデックス化されました。 移動したものはHTTP / 1.0コード301 Moved Permanently(ジャンルの古典)で発行され、検索エンジンはそれらを新しい場所に正しく移動しました。 そして、「忘却に沈む」と思われるものは、サイトに物理的に不在でしたが、インデックスにフラッシュされ、それらにアクセスすると、「美しい404ページ」が表示されましたが、HTTP / 1.0 404コードは表示されません(上記参照)。



この状況から抜け出す方法



404エラーのあるページの場合、HTTP / 1.0 404 Not Foundヘッダーを指定し、Locationヘッダーを介してリダイレクトせず、「美しい404ページ」のストリームを読み取ってブラウザーにリダイレクトすることにしました。 実装は次のとおりです。



 if($this->error->getCode()=='404') { header("HTTP/1.0 404 Not Found"); $url=JURI::root()."index.php?option=com_content&view=article&id=1001"; $data = file_get_contents($url) or die("Cannot open URL"); echo $data; }
      
      





これで、訪問者には必要なページにエラー404が表示され、検索エンジンは実際にコード404を認識し、入力された住所を「見つかりません」と見なします。



All Articles