CodeIgniter URL
CodeIgniterのURLは、デフォルトで検索エンジンと人間にとってわかりやすいように設計されています。動的なシステムと同義であるURLに対する標準的な「クエリ文字列」アプローチを使用するのではなく、CodeIgniterはセグメントベースのアプローチを使用します。
https://example.com/news/article/my_article
URLは、柔軟性を持ったURIルーティング機能を使用して定義できます。
URIライブラリとURLヘルパーには、URIデータの操作を簡単にする関数が含まれています。
URL構造
ベースURLにホスト名のみが含まれる場合
ベースURLがhttps://www.example.com/の場合、次のURLを想像してください。
https://www.example.com/blog/news/2022/10?page=2
以下の用語を使用します。
用語 |
例 |
説明 |
---|---|---|
ベースURL |
https://www.example.com/ |
ベースURLは、しばしばbaseURLとして示されます。 |
URIパス |
/blog/news/2022/10 |
|
ルートパス |
/blog/news/2022/10 |
ベースURLを基準としたURIパス。URI文字列とも呼ばれます。 |
クエリ |
page=2 |
ベースURLにサブフォルダが含まれる場合
ベースURLがhttps://www.example.com/ci-blog/の場合、次のURLを想像してください。
https://www.example.com/ci-blog/blog/news/2022/10?page=2
以下の用語を使用します。
用語 |
例 |
説明 |
---|---|---|
ベースURL |
https://www.example.com/ci-blog/ |
ベースURLは、しばしばbaseURLとして示されます。 |
URIパス |
/ci-blog/blog/news/2022/10 |
|
ルートパス |
/blog/news/2022/10 |
ベースURLを基準としたURIパス。URI文字列とも呼ばれます。 |
クエリ |
page=2 |
index.phpファイルの削除
Apache Webサーバーを使用する場合、デフォルトではURLにindex.phpファイルが必要になります。
example.com/index.php/news/article/my_article
サーバーがURLの書き換えをサポートしている場合は、URL書き換えを使用してこのファイルを簡単に削除できます。これはサーバーによって処理が異なりますが、ここでは最も一般的な2つのWebサーバーの例を示します。
Apache Webサーバー
Apacheでは、mod_rewrite拡張機能が有効になっている必要があります。有効になっている場合は、いくつかの簡単なルールを持つ.htaccess
ファイルを使用できます。以下にそのようなファイルの例を示します。この例では、「否定的」な方法で、指定された項目を除くすべてがリダイレクトされます。
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]
この例では、既存のディレクトリと既存のファイルへのリクエスト以外のすべてのHTTPリクエストは、index.phpファイルへのリクエストとして扱われます。
注意
これらの特定ルールは、すべてのサーバー構成で機能するとは限りません。
注意
また、外部からアクセスする必要がある可能性のあるアセットを上記のルールから除外するようにしてください。
nginx
nginxでは、locationブロックを定義し、try_files
ディレクティブを使用して、上記のApache構成と同じ効果を得ることができます。
location / {
try_files $uri $uri/ /index.php$is_args$args;
}
これにより、最初にURIに一致するファイルまたはディレクトリ(rootおよびaliasディレクティブの設定から各ファイルへのフルパスを構築)が検索され、次に、index.phpファイルに引数とともにリクエストが送信されます。