CodeIgniterのURLをきれいにする設定!index.phpを削除してSEOに強いルーティングにする方法
生徒
「CodeIgniterでWebサイトを作っているんですが、URLの中にindex.phpという文字が入ってしまって、なんだか見た目がかっこ悪いし、SEO的にも気になります。これを消してきれいにする方法ってありますか?」
先生
「良い着眼点ですね。URLにindex.phpが入っていると、長くなってしまうだけでなく、検索エンジンやユーザーにとってもあまり親切ではありません。CodeIgniterでは、設定を変更することで、このindex.phpを消してきれいなURLにすることができるんですよ。」
生徒
「本当ですか!初心者でも簡単に設定できるんでしょうか?具体的な手順を教えてください!」
先生
「はい、設定ファイル書き換えとサーバーの設定を少し行うだけで、すっきりと分かりやすいURLに変更できます。それでは、順を追って詳しく見ていきましょう!」
1. CodeIgniterのURLにindex.phpが入る理由と消すメリット
PHPフレームワークであるCodeIgniterを使ってWebアプリケーションやホームページを作成するとき、初期状態のままだとURLの中にindex.phpというファイル名が表示されてしまいます。例えば、トップページやお問い合わせページのURLが、http://example.com/index.php/contactのようになってしまいます。これでは、アドレスが長くなってしまい、見た目が少し不自然です。
URLからindex.phpを削除してすっきりきれいな状態にすることを、URLの書き換えやルーティングの最適化と呼びます。URLが短くシンプルになることで、サイトを利用するユーザーが覚えやすくなるという大きなメリットがあります。また、検索エンジンであるGoogleなどのクローラーに対しても、ページの階層構造が分かりやすくなり、SEOの観点からも非常に有利になります。初心者の方であっても、手順通りに設定を行えば決して難しくありませんので、一つずつ確実に進めていきましょう。
2. 設定に必要な前提知識とパソコンの環境準備
CodeIgniterでURLをきれいにする設定を行う前に、前提となる環境について少しだけ確認しておきましょう。パソコンを使ってWeb開発を行う際、サーバーソフトとしてApacheやNginxなどのWebサーバーが使われます。今回は、広く普及しているApacheというサーバーを前提として解説を進めていきます。ApacheサーバーでURLの書き換えを行うためには、mod_rewriteという特別な機能が有効になっている必要があります。
プログラミングを始めたばかりの方や、まだパソコンの操作に慣れていない方は、ファイルの編集や保存を行うときに文字コードや改行コードに注意してください。文字コードは基本的にUTF-8、改行コードはLFまたはCRLFを使用します。また、設定ファイルを変更する前には、必ず元のファイルのバックアップを取る習慣をつけておくと安心です。万が一設定を間違えてしまっても、バックアップがあればすぐに元の状態に戻すことができるため、トラブルを防ぐことができます。
3. App設定ファイルを開いてベースURLを変更する方法
それでは、具体的な設定作業を始めていきましょう。最初に、CodeIgniterの設定ファイルであるapp/Config/App.phpというファイルを開きます。このファイルには、アプリケーションの基本情報やURLに関する重要な設定が数多く記述されています。ファイルの中にあるpublic $baseURLという項目を探してください。初期状態では、この部分にindex.phpが含まれているアドレスが指定されていることがあります。
このbaseURLの値を、index.phpを含まない形式に書き換えます。例えば、ローカル環境で開発している場合であれば、以下のようなコードに変更します。ここでのポイントは、サイトの根元となるアドレスを正しく指定することです。設定を変更したら、ファイルを上書き保存して次のステップに進みましょう。
public $baseURL = 'http://localhost/my_project/';
4. ルーティング設定ファイルでのindex.phpの除外設定
次に、ルーティングを管理する設定ファイルを調整します。CodeIgniterでは、app/Config/Routes.phpというファイルを使って、ユーザーがアクセスしたURLと、実際に実行するコントローラーの処理を紐付けています。ルーティングの仕組みを正しく理解することで、URLの構造を自由自在にコントロールできるようになります。初期設定のままでもURLの書き換えは可能ですが、ルーティングファイル内で追加のルールを定義することで、より複雑なURLの制御やリダイレクトの設定も行えるようになります。
例えば、特定のURLにアクセスがあった場合に、自動的にきれいなURLへ誘導するルールを書くことができます。以下のサンプルコードは、ルーティング設定の基本的な記述例です。このように設定を記述しておくことで、アプリケーション全体のルーティングがスムーズに動作するようになります。
$routes->get('/', 'Home::index');
$routes->get('about', 'Pages::about');
$routes->get('contact', 'Contact::index');
5. .htaccessファイルを作成してURLを書き換える手順
URLからindex.phpを消すための最も重要で核心となるステップが、プロジェクトの公開ディレクトリ(通常はpublicフォルダやプロジェクトのルートフォルダ)に.htaccessという名前の設定ファイルを配置することです。このファイルは、Apacheサーバーに対してURLの書き換えルールを指示するためのものです。ファイル名の先頭にドットがついているため、パソコンの設定によっては隠しファイルとして扱われることがあるので注意してください。
.htaccessファイルの中には、mod_rewrite機能を使って、index.phpが省略されたリクエストを内部的に正しくルーティングするための記述を行います。以下のコードをコピーして、ファイルに貼り付けて保存してください。この設定を行うことで、ブラウザからindex.phpを入力しなくても、目的のページへ綺麗にアクセスできるようになります。
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]
</IfModule>
6. WebサーバーのApache設定とドキュメントルートの確認
ここまで設定を進めても、もしURLからindex.phpが消えない場合やエラーが表示される場合は、Apacheサーバー自体の設定を確認する必要があります。特に、サーバーのメイン設定ファイルであるhttpd.confやバーチャルホストの設定において、AllowOverrideの設定がAllになっていないと、先ほど作成した.htaccessファイルが無効化されてしまうことがあります。この設定ミスは初心者の方が非常につまずきやすいポイントですので、しっかりと確認しておきましょう。
httpd.confファイルの中で、プロジェクトの公開ディレクトリを指定している部分を探し、AllowOverride NoneからAllowOverride Allに変更します。変更を行った後は、必ずApacheサーバーを再起動させて設定を反映させます。以下のコードは、サーバー設定の記述例です。
<Directory "/var/www/html">
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
7. 設定後の動作確認とSEOに効果的なURL構造のチェック
すべての設定とファイルの保存が完了したら、実際にブラウザを起動して動作確認を行います。テスト用のURLとして、これまでhttp://localhost/my_project/index.php/contactと入力していた場所を、http://localhost/my_project/contactのようにindex.phpを抜いた状態でアクセスしてみてください。無事にページが表示されれば、URLをきれいにする設定は大成功です。
もしページが見つからないというエラー(404 Not Found)が出る場合は、.htaccessファイルの配置場所や、Apacheのmod_rewriteが有効になっているかをもう一度確認してみましょう。また、URLがすっきりしたことで、Googleなどの検索エンジンにとってもインデックスされやすいクリーンな構造になりました。最後に、作成したページが正しく表示されているか、リンク切れがないかをしっかりとチェックして、快適なWeb開発を進めていきましょう。