ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
| この記事の要点 |
|
RewriteEngine On とは
RewriteEngine On は Apache の URL 書き換えモジュール mod_rewrite を有効にするディレクティブです。これを記述しておかないと、後続の RewriteRule や RewriteCond はすべて無視されます。
逆に言うと、リダイレクト・URL 正規化・拡張子の隠蔽・特定 IP の遮断など mod_rewrite で実現する処理を 1 つでも書くなら、その先頭でこのディレクティブを必ず宣言します。
書式
RewriteEngine On # 有効化(デフォルトは Off)
RewriteEngine Off # 無効化
基本例:HTTP を HTTPS にリダイレクト
最も典型的な使い方が常時 HTTPS 化です。RewriteEngine On を最初に書き、その後に条件と書き換えルールを並べます。
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
詳しい SSL 設定の流れは SSLの設定 を参照してください。
www あり / なしの統一
SEO 上、example.com と www.example.com はどちらかに統一しておきます。
# www なしへ統一
RewriteEngine On
RewriteCond %{HTTP_HOST} ^www\.example\.com$ [NC]
RewriteRule ^(.*)$ https://example.com/$1 [R=301,L]
拡張子なし URL の実現
ユーザには /about と見せて、内部では about.php を読みたいケース。
RewriteEngine On
# ファイル・ディレクトリが実在しないときだけ
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
# 拡張子なしを .php にマッピング
RewriteRule ^([^.]+)$ $1.php [L]
古いパスから新しいパスへ恒久リダイレクト
RewriteEngine On
RewriteRule ^old/(.*)$ /new/$1 [R=301,L]
R=301 は「恒久的に移動した」を意味するステータスコードで、SEO の評価も新しい URL に引き継がれます。
.htaccess で使うための前提
.htaccess に RewriteEngine On を書いても効かない場合、原因のほとんどが以下のどちらかです。
① mod_rewrite が有効になっていない
# CentOS / RHEL (httpd) — 標準で有効。読まれているか確認
httpd -M | grep rewrite_module
# Debian / Ubuntu
a2enmod rewrite
systemctl restart apache2
② AllowOverride が許可されていない
.htaccess を読ませるには、対象ディレクトリに対して httpd.conf 側で AllowOverride を許可する必要があります。
<Directory "/var/www/html">
AllowOverride All # ← FileInfo だけでも mod_rewrite は使える
Require all granted
</Directory>
vhost / server config と .htaccess の違い
| 記述場所 | 反映タイミング | パフォーマンス |
|---|---|---|
| vhost / httpd.conf | Apache 再起動が必要 | 速い(起動時 1 回読み込み) |
| .htaccess | 即反映(再起動不要) | 遅い(リクエスト毎にディレクトリを遡って探索) |
運用上は本番は vhost / httpd.conf に直書き、変更頻度が高い箇所だけ .htaccess に置くのが鉄則です。
よくあるエラーと対処
| 症状 | 原因 / 対処 |
|---|---|
Invalid command 'RewriteEngine' | mod_rewrite が読み込まれていない。LoadModule rewrite_module modules/mod_rewrite.so を有効化 |
| .htaccess に書いても無視される | AllowOverride None のまま。対象 <Directory> で All か FileInfo を許可 |
| 無限リダイレクトループ | 条件が常に真。RewriteCond %{HTTPS} off 等で再帰しないようにガード |
| 500 Internal Server Error | 正規表現や [flags] の書式ミス。error_log を確認 |
| 変更が反映されない | vhost に書いた場合は Apache 再起動が必要 |
関連
- Options -Indexes — 親カテゴリ(Apache のディレクティブ群)
- サイト(ドメイン)の引越し方法 — 旧 URL から新 URL へのリダイレクト
- SSLの設定 — HTTPS 化と RewriteRule の併用
ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
子ページはありません
同階層のページはありません
人気ページ
- 1 Eclipseで「サーバーに追加または除去できるリソースがありません。」の原因と対処法
- 2 tomcat の起動 / 停止ログと catalina.log・catalina.out の違い
- 3 JavaScript で base URL を取得する方法|window.location.origin
- 4 YouTube Data API v3 エラー一覧|403・400・404 の原因と対処
- 5 Laravel エラー一覧|500/Blade/DB 接続/ルーティングの代表エラー
- 6 3Dグラフィックスとは|モデリング/レンダリング/主要ソフトウェア (Blender / Maya)
- 7 Spring Frameworkのアノテーション一覧
- 8 【Spring】@Valueアノテーションとは
- 9 CATALINA_HOME の確認方法 (Linux / Mac)
- 10 【Spring】@Autowiredアノテーションとは
最近更新/作成されたページ
- 【django】ログイン 認証機能 2026-09-08 03:22:09
- MySQL ERROR 1063 Incorrect column specifier for column|原因と直し方 2026-09-08 03:11:09
- 【PHPエラー】Object of class stdClass could not be converted to string 2026-09-07 07:46:04
- Julia Genie ローカル開発サーバ起動完全ガイド 2026-09-07 07:46:04
- Wi-Fi とは|規格と世代(Wi-Fi 4〜7)・周波数帯・CSMA/CA・WPA3 NEW 2026-09-07 07:45:13
- set コマンドでシェルオプションと位置パラメータを操作 | bash 2026-09-07 07:45:13
- JPEG(.jpg/.jpeg)画像形式の完全ガイド — 仕様・マジックナンバー・他形式との比較・EXIF 2026-09-07 07:45:13
- UE5 Get Overlapping Actorsで特定クラスだけ処理|Class Filter・Cast To 2026-09-07 07:45:13
- Linuxで特定拡張子のファイルを再帰削除|find -deleteの安全手順 2026-09-07 07:45:13
- Django CBVでテンプレートに値を渡す|get_context_data・extra_context 2026-09-07 07:45:13
- Linuxで複数ファイルの文字列を一括置換|find・sed・xargsの安全手順 2026-09-07 07:45:13
- Laravelルートグループ|prefix・middleware・nameで一括管理 2026-09-07 07:45:13
- Linux whichコマンドの使い方|絶対パス取得とtype・command -vの違い 2026-09-07 07:45:13
- Linux catコマンドの使い方|行番号表示・複数ファイル連結 2026-09-07 07:45:13
- unable to execute 'gcc': No such file or directory 2026-09-07 07:45:13
コメントを削除してもよろしいでしょうか?