2009年 11月 19日
Posted in
運用管理

既に削除されたページ、存在しないURLが指定された時に表示するのが404ページです。Joomla!の場合、標準で次の様なページが表示されます。
検索モジュールの準備
404ページへ埋め込む検索モジュールを用意します。検索モジュールを作成(またはコピー)し、「有効」を「はい」に、「配置」にはテンプレートに存在しないポジション名を入力します。ここでは「404search」にしました。
404ページの作成
通常の記事を作成するように404ページを作成します。WYSIWYGエディタを使用して自由に編集して構いません。先ほど作成した検索モジュールを読み込むため、loadpositionタグを文末に記述します。セクションを「未分類」、カテゴリを「未分類」にして保存して下さい。
404ページへリンクするメニューアイテムの作成
上記で作成した404記事へリンクするためのメニューアイテムを作成します。このメニューアイテムは非公開にするため、作成するメニューはどこでも構いません(例えばメインメニューなど)。
メニューアイテム作成画面から「新規」→「記事」→「スタンダード記事レイアウト」を選択します。
タイトルやエイリアス(別名)を入力し、公開を「いいえ」に設定します。
先ほど作成した記事を選択したら「適用」をクリックします。
次に「リンク」の欄に表示されたURLをコピーします。このURLは後で必要になりますので、メモ帳などに貼り付けておくと良いでしょう。
エラーページのオーバーライド
Joomla!では存在しないURLが指定された場合、/templates/system/error.phpファイルを返す仕組みになっています。このファイルをテンプレート側でオーバーライドして利用します。
/templates/system/error.phpを使用中のテンプレートディレクトリ直下にコピーして下さい(/templates/テンプレート名/error.phpとなるように)。
error.phpの編集
2009/12/01追記 以前記載していたfile_get_contents関数を使用した方法は、PHP設定のallow_url_fopenがONでないと使用できません。またallow_url_fopenをONにした場合セキュリティ上のリスクがあるため、cURL関数を使用した方法に修正しました。問題があればご指摘ください。
コピーしたerror.phpファイルを開き、13行目付近を次の様に編集します。
編集前
編集後(2009/12/01修正)
「上記でコピーしたURL」の部分は、先ほどコピーしておいたURLと置き換えて下さい。
また最終行へ以下の様に追加します。
編集前
編集後
ちなみに・・・
- SEFコンポーネント(sh404sef、JoomSEF、AceSEFなど)を利用すると、こんな面倒な事をしなくても同じ事ができます。
- FirefoxのLive HTTP Headersでステータスコードを確認すると、正しく404を返しているようですがその後の文字列が文字化けしています。なんでだろう?問題はなさそうなので様子見です。
( 2 件の評価 )
| < 前 | 次 > |
|---|









コメント
いつも参考にさせて頂いています 。
早速、実践させて頂きました。
エラーページまでカスタマイズで きるのですね
今までエラーページは、どうしよ うも出来ないと思っていたので、 感激です!
ありがとうございました
お役に立てて幸いです。
いつも参考にさせてもらってます 。
早速、試してみたのですが、以下 のようなエラーとなり、表示がさ れませんでした。
403 Forbidden
You don't have permission to access /index.php on this server
index.phpのアクセス権を変更してみ ましたが、どのファイルかも検討 が付かず、改善されませんでした 。何かがアクセス禁止になってい るのでしょうか?
お手が空いたときにでも確認して 頂ければ幸いです。
試しにXserverでもやって みましたが問題ありませんでした 。
サーバやPHPの設定に起因する のかもしれません。
この投稿に対するコメントのRSSフィード