.htaccess ジェネレーター
ウェブサイト用の一般的な.htaccessルールを生成します。必要なオプションを選択して、生成されたコードをコピーしてください。
Performance
Security
• The .htaccess file should be placed in the root directory of your website
• Make sure mod_rewrite is enabled on your Apache server
• Always backup your existing .htaccess file before replacing it
• Some hosting providers may restrict certain .htaccess directives
.htaccess ジェネレーター の使い方
- 1
ドメインを入力する
example.com のようなドメイン名を「Domain Settings」フィールドに入力します。
- 2
ルールを選択する
Force HTTPS、www の強制または削除、GZIP 圧縮、直リンク保護、カスタムエラーページなど、必要なオプションにチェックを入れます。
- 3
リダイレクトを追加する
URL リダイレクトでは、旧パスと新パスを入力し、恒久的な 301 か一時的な 302 のリダイレクトを選びます。
- 4
コピーまたはダウンロードする
「Copy to Clipboard」または「Download .htaccess」を使い、ファイルをサイトのルートディレクトリにアップロードします。
Apache の .htaccess ファイルを使いこなす
.htaccess ファイルが実際にすること
.htaccess ファイルは、Apache ウェブサーバー向けのディレクトリ単位の設定ファイルです。Apache が AllowOverride を有効にしてビルドされていると、配信元のディレクトリにある .htaccess ファイルと、そのすべての親ディレクトリにあるものを読み込み、それらのディレクティブをそのリクエストに適用します。これにより、メインのサーバー設定に触れたり Apache を再起動したりせずに、サーバーの挙動、リダイレクト、キャッシュ、アクセス制御などを変更できます。変更はまさに次のリクエストで効くため、メイン設定にアクセスできない共有ホスティングで .htaccess はとても便利なのです。
ファイル名は文字どおり .htaccess で、先頭にドットが付き拡張子はなく、Unix 系システムではこのドットがそれを隠しファイルにします。挙動を変えたいディレクトリに置きます。最も一般的にはサイトのドキュメントルートです。ルートにあるルールは、より深い .htaccess が上書きしない限り、サイト全体に適用されます。
Apache 専用:Nginx などは無視する
ルールを1つでも書く前にまず確認すべきことがこれです。.htaccess は Apache の機能だということです。もう一方の支配的なウェブサーバーである Nginx は、.htaccess ファイルをまったく読まず、設計上これからも決して読みません。サイトが Nginx で動いているなら、ルートに .htaccess を置いても何も起こらず、同等のリダイレクト、書き換え、ヘッダーは代わりに Nginx のサーバーブロックで表現しなければなりません。LiteSpeed と一部の Apache 互換サーバーは .htaccess の構文を理解しますが、Nginx、Caddy、IIS はそれぞれ独自の設定形式を使います。
どのサーバーかわからない場合は、Server レスポンスヘッダーを確認しましょう。このサイトの HTTP ヘッダービューアで見られます。そこに Apache と表示されれば .htaccess が機能することが確認でき、nginx と表示されれば、このファイルでは見当違いだということです。
mod_rewrite によるリダイレクトと正規化
.htaccess の最もよくある仕事は URL のリダイレクトで、RewriteEngine On ブロックで包んだ mod_rewrite モジュールを通じてそれを行います。単純な恒久的な移動には古いパスから新しいパスへの Redirect 301 を使い、RewriteRule は正規表現を使ったパターンベースのリダイレクトを扱います。ほぼすべてのサイトが必要とする2つの正規化作業は、単一のホスト名に統一すること(常に www か、常に www なし)と HTTPS への強制で、どちらも受信リクエストを検査する RewriteCond に続けて正規版へ 301 を発行する RewriteRule で実現します。
保持するつもりの移動には常に 301(恒久的)を使いましょう。301 はリンクの評価値を移動先に渡し、検索エンジンにインデックスの更新を伝えるからです。微妙ですが重要な点として、リダイレクトの連鎖を避けることが挙げられます。http://example.com をまず https://example.com を経由させるのではなく、1ホップで https://www.example.com へまっすぐ送りましょう。余分なホップごとに遅延が増え、ランキングシグナルがわずかに薄まります。これはこのサイトのリダイレクトチェーンチェッカーで見つける手助けができます。
パフォーマンス:圧縮、キャッシュ、そして AllowOverride のコスト
2つの .htaccess 機能が即座のパフォーマンス向上をもたらします。mod_deflate で設定する GZIP 圧縮は、HTML、CSS、JavaScript などのテキストベースのレスポンスを送信前に縮小し、転送サイズをしばしば60〜80パーセント削減します。mod_expires や mod_headers を介して Cache-Control や Expires ヘッダーで設定するブラウザキャッシュは、画像やフォントなどの静的アセットを訪問のたびに再ダウンロードするのではなく再利用するようブラウザに伝えます。この2つは合わせて、利用できる中で最も効果が高く、最も労力の少ない速度改善のいくつかです。
ただし、.htaccess そのものには隠れたコストがあります。Apache はすべてのリクエストの経路上のすべてのディレクトリで .htaccess ファイルの有無を確認しなければならないため、AllowOverride を有効にしているとリクエストごとにファイルシステムの参照が加わります。自分で管理する高トラフィックのサイトでは、これらのディレクティブをメインのサーバー設定に移して AllowOverride None に設定するほうが、測定できるほど高速です。共有ホスティングでは通常選択の余地がなく、利便性がオーバーヘッドを上回りますが、パフォーマンスが重要なサーバーで .htaccess が推奨されない理由を知っておく価値はあります。
セキュリティ、エラーページ、アクセス制御
リダイレクトやパフォーマンスにとどまらず、.htaccess はサイトを堅牢にし、仕上げを整えるためにも広く使われます。ErrorDocument ディレクティブで設定するカスタムエラーページは、そっけなくなりがちな Apache の既定のエラー画面を、404 や 500 のレスポンス用のブランド付きページに置き換えます。これはユーザーにとってもセキュリティにとっても優れています。ホットリンク保護は Referer ヘッダーに対する RewriteCond を使い、ほかのサイトがあなたの画像を埋め込んで帯域を消費するのを止めます。さらに、X-Frame-Options、Content-Security-Policy、Strict-Transport-Security といったセキュリティヘッダーを Header ディレクティブで送ることもできます。
アクセス制御では、.htaccess は IP アドレスでディレクトリを制限したり、.htpasswd でパスワードを要求したりでき、コンテンツ管理システム上でユーザー名を探る著者列挙スキャンを遮断できます。これらの制御は本当に役立ちますが、Apache が通常の経路でリクエストを処理するときにしか動作しないことを忘れないでください。.htaccess だけに頼るのではなく、適切なアプリケーションレベルのセキュリティと組み合わせましょう。
構文は容赦ない:信頼する前にテストを
.htaccess の最大のリスクは、構文エラーが通常は静かには失敗しないことです。代わりに、そのディレクトリ配下のすべてのページで 500 Internal Server Error を引き起こし、ファイルが修正されるまでサイト全体をオフラインにします。コンパイル段階もデプロイ前の検証もないので、打ち間違い、欠けたモジュール、ホストが無効化したディレクティブが、一瞬ですべてを壊しかねません。Apache のディレクティブは順序にも依存します。書き換えルールは上から下へ評価され、特定のルールの前に置かれた広範なルールが、特定のルールが捕らえるはずだったリクエストを飲み込んでしまうことがあります。
安全な手順は、変更前に必ず既存の .htaccess をバックアップし、低トラフィックの時間帯に変更をデプロイし、その直後にサイトを読み込んで応答することを確認することです。500 エラーが見えたら、まずバックアップを復元し、デバッグはその後にします。ディレクティブが mod_rewrite や mod_deflate のようなモジュールに依存している場合は、ホストでそのモジュールが有効になっていることを確認しましょう。欠けているモジュール向けのルールはエラーになりかねないからです。
よくある質問
このジェネレーターはどんなルールを作れますか?
301 リダイレクトと 302 リダイレクトの違いは何ですか?
生成した .htaccess ファイルはどこに置けばよいですか?
Nginx などの他のサーバーで動作しますか?
生成されたコードはどこかに送信されますか?
関連ツール
こちらの便利なツールもどうぞ