リダイレクトと404ページを制御する
公開日| 2009年04月04日 | コメントはまだありません。
カテゴリー:基本設定 |
よく、記事やカテゴリが増えてくると、メニューの書き換えや、構成を変更をしたくなります。
この場合、問題なのが、せっかく、GoogleやYahooなどの検索エンジンで上位に表示されるページでも、古いURLにリンクされたままになることです。
メニューの書き換えや、略称などの変更を行ってしまうと、検索結果からサイトへきた人に、Joomla!の標準で用意されている404のページが表示されてしまいます。 このページは、赤い画面が印象的すぎて(標準色)、エラーの印象を強くあたえてしまい、さらに、このサイトがなくなったような印象さえあたえてしまうこともあります。
この問題を、緩やかに解消させるに、リダイレクトと404のページを、もっと、やわらかい印象のページへ変更したいと考えたくなるでしょう。 ここでは、そんなことを考えてみましょう。
メニューの書き換えや、略称などの変更を行ってしまうと、検索結果からサイトへきた人に、Joomla!の標準で用意されている404のページが表示されてしまいます。 このページは、赤い画面が印象的すぎて(標準色)、エラーの印象を強くあたえてしまい、さらに、このサイトがなくなったような印象さえあたえてしまうこともあります。
この問題を、緩やかに解消させるに、リダイレクトと404のページを、もっと、やわらかい印象のページへ変更したいと考えたくなるでしょう。 ここでは、そんなことを考えてみましょう。
STEP.1 Apache のリダイレクト機能を使ってみる
昨今の、WEBサーバのシェアは、50%がApacheだそうだ。追随するサーバは、IISらしいです。ここでは、Apache のリダイレクト機能(Redirect,RedirectMatch)を使ってみましょう。
Apache には、.htaccess というファイルでディレクトリの管理を行うことができます。
.htaccess が存在するディレクトリ配下を、その中に記述された情報でコントロールすることができます。 また、その配下のディレクトリ毎に、同じように.htaccessが存在すれば、直近の.htaccessの内容が優先されます。
実際に、リダイレクトさせるためには、.htaccess のファイルに以下のように記述すれば良いです。
Redirect permanent /test/ http://www.sample.com/test2/
上記の記述では、
-
このWEBサーバの/test/にアクセスしたものは、http://www.sample.com/test2/ へリダイレクトする
さらに個別のページをリダイレクトさせたい場合は、以下のようにその個別のページを記述すれば良いです。
Redirect permanent /test/sample.html http://www.sample.com/test2/sample2.html
さらに名前を加工して飛ばしたい場合、RedirectMatch を使えば良いです。
RedirectMatch permanent (.*)\.htm$ http://www.sample.com$1.html
この例は、全ての.htmと言う拡張子は、.htmlへ変換することを意味します。例)
http://www.sample.com/test/1.htm → http://www.sample.com/test/1.html
もっと詳しく知りたい場合は、以下のページを参照いただければ、更に詳しい情報があるでしょう。
Redirect ディレクティブ
http://httpd.apache.org/docs-2.2/ja/mod/mod_alias.html#redirect
RedirectMatch ディレクティブ
http://httpd.apache.org/docs-2.2/ja/mod/mod_alias.html#redirectmatch
Redirect ディレクティブ
http://httpd.apache.org/docs-2.2/ja/mod/mod_alias.html#redirect
RedirectMatch ディレクティブ
http://httpd.apache.org/docs-2.2/ja/mod/mod_alias.html#redirectmatch
STEP.2 Apache のエラードキュメント機能を使ってみる
次は、404を同じようにApacheの機能を使って、別のページ(Joomla!の標準の404でない)へ移動させることを考えてみましょう。これは、Apacheの機能から考えれば、以下のようにすれば良いように思います。
ErrorDocument 404 http://www.sample.com/error404.html
これは、
-
404のエラー(指定されたページが存在しないエラー)の場合、http://www.sample.com/error404.htmlを表示しなさい
(※問題の本当の原因は???)
もっと詳しく知りたい場合は、以下のURLで説明があるので参考にしてもらいたい。
ErrorDocument ディレクティブ
http://httpd.apache.org/docs/2.2/ja/mod/core.html#errordocument
上記のやり方は、Joomla!としては、本来のやり方ではでないようです。
http://docs.joomla.org/Tutorial:Advanced_topicsのCustom error pagesを参照。
Joomla!でのエラーページのカスタマイズ方法は、以降に記述するやり方のようです。
ErrorDocument ディレクティブ
http://httpd.apache.org/docs/2.2/ja/mod/core.html#errordocument
上記のやり方は、Joomla!としては、本来のやり方ではでないようです。
http://docs.joomla.org/Tutorial:Advanced_topicsのCustom error pagesを参照。
Joomla!でのエラーページのカスタマイズ方法は、以降に記述するやり方のようです。
次のステップで、Joomla!テンプレートの設定で404を独自のページへ移動させてみましょう。
STEP.3 Joomla!テンプレートの設定で404を独自のページへ移動させる
次は、404をJoomla!のテンプレート機能を使って、別のページ(Joomla!の標準の404でない)へ移動させることを考えてみましょう。これは、単純です。(いろんなフォーラムのページで紹介されている)
- error.phpというファイルをUTF-8Nで作成します。
※これは、/template/system/error.php を自身が使うデフォルトのテンプレートディレクトリへコピーして変更するのが最も安全です。
内容は、以下のような内容です。
http://www.example.com/は、あなたのサイト名です。1 2 3 4 5 6 7
<?php defined( '_JEXEC' ) or die( 'Restricted index access' ); if (($this->error->code) == '404') { header('Location:http://www.example.com/error404.html'); exit; } ?>
- 404のエラーが発生した時に見せたいページ(HTML)を作成し、error404.htmlとして保存する。
- error.php と error404.html をサーバへアップロードする。
error.phpは、あなたが使っているテンプレートのフォルダへ
例)
/template/あなたが使っているテンプレート名/error.php
error404.htmlは、あなたのWEBサーバのルートディレクトリへ
例)
/error404.html
最後に、おまけ
最近では、URLの先頭にwwwをつけても、つけなくても同じ内容へアクセスできるようになっていることがよくあります。 これは、ユーザにとっては、良いことかもしれませんが、GoogleやYahooでは、別のサイトと認識されかねません。
ここで、.htaccessを使って、wwwをつけずにアクセスした場合に、リダイレクトして、必ず、wwwをつけてあげることを 記述してみましょう。
Joomla!では、デフォルトでリダイレクトのルール設定の記述があるため、先頭におくの肝要です。
一般的なwwwをつける場合記述例)
※RewriteEngine Onの元のソース位置の直下に記述する。
または、以下のような記述でもの良い。
※RewriteEngine Onの元のソース位置の直下に記述する。
最近では、URLの先頭にwwwをつけても、つけなくても同じ内容へアクセスできるようになっていることがよくあります。 これは、ユーザにとっては、良いことかもしれませんが、GoogleやYahooでは、別のサイトと認識されかねません。
ここで、.htaccessを使って、wwwをつけずにアクセスした場合に、リダイレクトして、必ず、wwwをつけてあげることを 記述してみましょう。
Joomla!では、デフォルトでリダイレクトのルール設定の記述があるため、先頭におくの肝要です。
一般的なwwwをつける場合記述例)
※RewriteEngine Onの元のソース位置の直下に記述する。
RewriteEngine On
RewriteCond %{HTTP_HOST} ^exmaple\.com$ [NC]
RewriteRule ^(.*)$ http://www.exmaple.com/$1 [R=301,L]
※RewriteEngine Onの元のソース位置の直下に記述する。
RewriteEngine On
RewriteCond %{HTTP_HOST} !^www\.exmaple\.com$ [NC]
RewriteRule ^(.*)$ http://www.exmaple.com/$1 [R=301,L]
この記事の設定で、Googleウェブマスターから認証に失敗するようになったら、以下のページを参照してください。

