SEO · 1 min read · Jan 02, 2026

Mod Rewriteの便利な使い方

Mod Rewriteの便利な使い方

著者: マイク・エムス

このチュートリアルでは、mod rewriteが何であるかと、その使い方のいくつかの例を教えます。Mod rewriteは強力なツールであり、ウェブサイトをSEOフレンドリーにする最も簡単な方法の一つです。

Mod Rewriteとは?

Mod rewriteは、リクエストされたURLをその場で書き換えることができるApacheサーバーの一部です。無限のルールをサポートし、それに無限の条件を付けることができるため、非常に柔軟で重要なURL操作メカニズムです。これは、インターネットユーザーや検索エンジンフレンドリーなURLに使用できます。これにより、データベース駆動のウェブサイトがインデックスされる可能性が高まります。

Mod Rewriteの有効化/インストール

最初に行うべきことは、サーバーにmod_rewriteがあることを確認することです。デフォルトでは、Apacheにはmod_rewriteがインストールされていますが、有効化されていません。サーバーでmod_rewriteが有効かどうかをテストする最も簡単な方法は、テストディレクトリ(例: /modrewrite-test/)に以下を含む.htaccessファイルを作成することです:

Options +FollowSymLinks  
RewriteEngine On

次に、サブディレクトリにアクセスしてみてください。次の2つのことが起こる可能性があります:

  • エラーなし おめでとうございます、mod_rewriteエンジンが有効になりました。
  • 500、内部サーバーエラー このメッセージが表示された場合、mod_rewriteはサーバーにインストールされていない/有効になっていません。

サーバーにmod_rewriteがインストールされていないことがわかった場合は、次の手順に従ってください。

  1. httpd.confファイルを見つけます(通常、conf、configなどの名前のフォルダー内にあります)
  2. httpd.confファイル内で、LoadModule rewrite_module modules/mod_rewrite.soの行のコメントを解除します(行の前の#記号を削除します)
  3. ClearModuleListの行がコメント解除されていることを確認し、AddModule mod_rewrite.cの行がコメントアウトされていないことを確認します。

これらの手順を終えたら、次のコマンドでApacheサーバーを再起動します。

/etc/init.d/httpd restart

これでmod_rewriteが正常に有効になっているはずです。Apacheサーバーが再起動した後、再度mod_rewriteをテストしてください。

Mod Rewriteを使用して常にWWWを削除/追加する

多くのウェブサイトが抱える簡単に修正できる問題の一つは、検索エンジンでの重複結果です。任意の検索エンジンでは、http://www.example.com/とhttp://example.comは全く異なるウェブサイトです。これは大きな問題で、ウェブサイトのコンテンツが重複コンテンツとして認識され、検索エンジンのランキングが下がります。新しい友達であるmod_rewriteを使用して、この問題に対処できます。

任意の.htaccessファイルの先頭で、Mod Rewriteをオンにする必要があります。これは常に.htaccessファイルの先頭にあるべきです。Mod Rewriteをオンにするのは一度だけで済みます。

RewriteEngine On

さらに、Rewrite Baseを設定する必要があります。これは通常、.htaccessファイルが存在するディレクトリです。.htaccessファイルがルートフォルダーにある場合、Rewrite Baseは次のようになります:

RewriteBase /

さて、選択肢は2つあります。常にwwwを削除するか、常に保持するかです。常にwwwを削除する(私の好みの方法)には、ルートディレクトリに.htaccessファイルを作成します。そのファイルに以下を追加します:

RewriteCond %{HTTP_HOST} ^www.example.com$ [NC]  
RewriteRule ^(.*)$ http://example.com/$1 [R=301,L]

同様に、常にwwwを追加したい場合は、.htaccessファイルに以下を追加します:

RewriteCond %{HTTP_HOST} ^example.com$  
RewriteRule (.*) http://www.example.com$1 [R=301]

example.comをあなたのドメインに変更することを忘れないでください。

Mod Rewriteを使用してURLをクリーンアップする

Mod Rewriteの最も人気のある使い方は、ウェブサイトのURLをクリーンアップすることです。ご存知かもしれませんが、検索エンジンは多くの引数を持つURLを好みません。例:

http://www.example.com/index.php?p=about

mod_rewrite Apacheモジュールの力を借りて、このURLをはるかにクリーンにできます。

http://www.example.com/about.html

これを達成するために、正規表現を使用します。これを達成するために、wwwを追加/削除する行の後に、.htaccessファイルに以下を追加しました。

RewriteRule ^([^/]+).html$ /index.php?p=$1 [QSA,L,NC]

この行を詳しく見て、何をしているのかを理解しましょう。

([^/]+)

これは、スラッシュ以外の何かを一致させるための正規表現です。URLを再書き換える際に、2つのスラッシュの間にあるものを一致させる最も簡単な方法です。

.html

これは、URLの末尾に.htmlを付けます。これにより、PHPファイルが通常の.htmlファイルのように見えます。

/index.php?p=$1

これは、元の位置を示す再書き換えの部分です。最初の部分で特定の文字列に一致する正規表現があるたびに、この部分で参照する必要があります。$1は、行の最初の半分の最初の正規表現を参照します。したがって、変数pに割り当てられた値は、行の最初の半分の最初の正規表現の位置に配置されます。

URLをディレクトリのように見せたい場合は、前述の行の代わりにこの行を使用します。

RewriteRule ^([^/]+)/?$ /index.php?p=$1 [QSA,L,NC]

これにより、次のようなURLが返されます:

http://www.example.com/about/

URLにトレーリングスラッシュを追加する

URLにトレーリングスラッシュを追加する主な目的は、サーバーのパフォーマンスを向上させることです。ファイル拡張子で終わらないURLの末尾にトレーリングスラッシュが追加されると、サーバーに対して1回の呼び出しのみを行うように指示され、サーバートラフィックが減少します。

ファイル拡張子で終わらないURL(例: http://www.example.com)に常にトレーリングスラッシュを追加するには、ルートディレクトリの.htaccessファイルに以下を追加します。

rewriteCond $1 !/$  
rewriteCond %{REQUEST_FILENAME}/ -d  
rewriteRule (.+) http://www.example.com/$1/ [R=301,L]

最初の行は、トレーリングスラッシュがないかどうかを確認します。2行目は、トレーリングスラッシュが追加された場合に、指定されたURLにディレクトリが存在するかどうかを確認します。3行目は、トレーリングスラッシュを追加し、ユーザーをリダイレクトします。

Share: X/Twitter LinkedIn

新しい投稿を受信箱で受け取る

スパムはありません。いつでも購読を解除できます。