カテゴリ: CodeIgniter 更新日: 2026/08/28

CodeIgniterのURLをきれいにする設定!index.phpを削除してSEOに強いルーティングにする方法

CodeIgniterでURLをきれいにする設定(index.php削除)
CodeIgniterでURLをきれいにする設定(index.php削除)

先生と生徒の会話形式で理解しよう

生徒

「CodeIgniterでWebサイトを作っているんですが、URLの中にindex.phpという文字が入ってしまって、なんだか見た目がかっこ悪いし、SEO的にも気になります。これを消してきれいにする方法ってありますか?」

先生

「良い着眼点ですね。URLにindex.phpが入っていると、長くなってしまうだけでなく、検索エンジンやユーザーにとってもあまり親切ではありません。CodeIgniterでは、設定を変更することで、このindex.phpを消してきれいなURLにすることができるんですよ。」

生徒

「本当ですか!初心者でも簡単に設定できるんでしょうか?具体的な手順を教えてください!」

先生

「はい、設定ファイル書き換えとサーバーの設定を少し行うだけで、すっきりと分かりやすいURLに変更できます。それでは、順を追って詳しく見ていきましょう!」

1. CodeIgniterのURLにindex.phpが入る理由と消すメリット

1. CodeIgniterのURLにindex.phpが入る理由と消すメリット
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. 設定に必要な前提知識とパソコンの環境準備

2. 設定に必要な前提知識とパソコンの環境準備
2. 設定に必要な前提知識とパソコンの環境準備

CodeIgniterでURLをきれいにする設定を行う前に、前提となる環境について少しだけ確認しておきましょう。パソコンを使ってWeb開発を行う際、サーバーソフトとしてApacheやNginxなどのWebサーバーが使われます。今回は、広く普及しているApacheというサーバーを前提として解説を進めていきます。ApacheサーバーでURLの書き換えを行うためには、mod_rewriteという特別な機能が有効になっている必要があります。

プログラミングを始めたばかりの方や、まだパソコンの操作に慣れていない方は、ファイルの編集や保存を行うときに文字コードや改行コードに注意してください。文字コードは基本的にUTF-8、改行コードはLFまたはCRLFを使用します。また、設定ファイルを変更する前には、必ず元のファイルのバックアップを取る習慣をつけておくと安心です。万が一設定を間違えてしまっても、バックアップがあればすぐに元の状態に戻すことができるため、トラブルを防ぐことができます。

3. App設定ファイルを開いてベースURLを変更する方法

3. App設定ファイルを開いてベースURLを変更する方法
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の除外設定

4. ルーティング設定ファイルでのindex.phpの除外設定
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を書き換える手順

5. .htaccessファイルを作成してURLを書き換える手順
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設定とドキュメントルートの確認

6. WebサーバーのApache設定とドキュメントルートの確認
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構造のチェック

7. 設定後の動作確認とSEOに効果的なURL構造のチェック
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開発を進めていきましょう。

カテゴリの一覧へ
新着記事
New1
PHP
PHPで日本語の曜日を表示する方法を解説!配列を使った曜日変換の定番コード
New2
Symfony
Symfonyでバリデーションエラーを表示する方法!初心者でもわかるテンプレート活用術
New3
Laravel
Laravelのマイグレーションエラーの原因と解決方法を完全ガイド
New4
Laravel
Laravelのrefreshとfreshの違いを初心者でもわかる解説
人気記事
No.1
Java&Spring記事人気No1
Laravel
Laravelのインストール方法まとめ!ComposerとLaravel Installerの使い方
No.2
Java&Spring記事人気No2
Laravel
Laravel通知機能の決定版!特定のユーザーにのみ通知を送る認可制御を初心者向けに徹底解説
No.3
Java&Spring記事人気No3
Laravel
Laravelのルーティングの基本構文と書き方をやさしく解説!初心者でも理解できるWebルートの仕組み
No.4
Java&Spring記事人気No4
Laravel
Laravelのプロジェクト構造を理解しよう!初心者向けディレクトリ解説
No.5
Java&Spring記事人気No5
Laravel
Laravelでログを出力する方法(Monolog・storage/logs)
No.6
Java&Spring記事人気No6
Laravel
LaravelのBlade構文まとめ!@if @foreach など基本ディレクティブ解説
No.7
Java&Spring記事人気No7
Laravel
Laravelのエラー画面をカスタマイズする方法!errors/xxx.blade.phpの使い方を初心者向けに解説
No.8
Java&Spring記事人気No8
Laravel
Laravelメール送信ログの保存と確認方法を完全解説!Mail::fakeとログ出力の使い方