.htaccessによる書き換えルールとディレクトリインデックス
.htaccess のリライトルールは、URL を変更またはリダイレクトするためのルールです。ウェブサイトの管理者は、簡単な設定ファイルを通じて複雑な URL のリライト操作を実行し、URL の装飾や SEO の最適化などの機能を実現できます。
一般的な.htaccessリライトルールの例を以下に示します。
- リダイレクトのルール
- URLを別のURLにリダイレクトする:
/old-page.html から /new-page.html にリダイレクト
- あるフォルダを別のフォルダにリダイレクトする:
/old-folder/ を /new-folder/ にリダイレクト
- 外部 URL にリダイレクトする URL
/old-page.html を http://www.example.com/new-page.html にリダイレクト
- URL書き換えルール:
- URLの拡張子を隠す:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^\.]+)$ $1.php [NC,L]
- クエリパラメータ付きのURLをフレンドリーなURLにリライトする
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^products/([^/]+)/?$ product.php?id=$1 [NC,L]
- URL をサブディレクトリにリライトする:
RewriteEngine On
RewriteBase /subfolder/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]
DirectoryIndex は Apache サーバーの設定項目で、アクセス時の既定のファイル名を指定します。 ユーザーがディレクトリにアクセスした場合、特定のファイル名が指定されていなければ、 DirectoryIndex で指定されたファイルが既定でアクセスされます。
たとえば、DirectoryIndex を index.php のように設定しておくと、ユーザーがそのディレクトリにアクセスしたとき、そのディレクトリの中の index.php にアクセスされます。
.htaccess ファイルに下記のディレクティブを追加することで、DirectoryIndexを設定します。
DirectoryIndex index.php index.html
上記の例では、デフォルトのアクセスファイルはindex.php またはindex.html に指定されており、それらのファイルがアクセスされたフォルダに存在する場合、優先してアクセスします。
.htaccessのRewriteRuleを使用してURLの変更やリダイレクトを行い、DirectoryIndexでアクセスする際のデフォルトのファイル名を設定することで、Webサイトの機能やユーザーエクスペリエンスを向上させることができます。