apache

【Apache】Rewriteの設定方法解説【さまざまな条件でURLを書き換えてみよう】

Linuxサーバーの画面

こんにちは、フルスタックエンジニアのryuです。

今回の記事では、ApacheでRewriteの設定について解説します。リライトでURLの書き換えを行ってみましょう。Rewriteを行うためには、htaccessなどの設定ファイルで、RewriteRuleやRewriteCondの設定を行う必要があります。今回の記事では、Rewriteの設定方法を分かりやすく説明します。

サーバー構築を実践で身につけるInfraAcademy

※本ページには、プロモーション・アフィリエイトリンクが含まれています

【Apache】Rewriteの設定方法解説

ApacheでどうやってRewriteするの?

ApacheでRewriteの設定について解説します。リライトを行ってURLの書き換えを行いましょう。ApacheでRewriteをする手順は以下の通りです。

  • Rewriteのモジュールを有効にする
  • .htaccessを有効にする設定
  • .htaccessにRewriteの設定をする

それぞれの手順について解説します!

Rewriteのモジュールを有効にする

まず、Rewriteのモジュールを有効にしましょう。モジュールの有効は以下のコマンドです。

a2enmod rewrite

モジュールの有効化をしたら、Apacheの再起動を行いましょう。

 service apache2 restart

これでモジュールの有効化が完了です。Rewriteの設定に進みましょう。

Rewriteの設定

次にRewriteの設定を行います。Rewriteの設定は”apache.conf”や”.htaccess”ファイルで設定が可能です。今回はドキュメントルートの”.htaccess”ファイルに設定を行います。

“.htaccess”ファイルで設定が上書きできるように”/etc/apache2.conf/”の設定ファイルに以下の設定を行います。

<Directory /var/www/html>
        AllowOverride All
</Directory>

次にリライトの設定を行います。test.htmlにアクセスすると、yahooのホームページにアクセスされるように設定しています。設定ファイルは”/var/www/html/.htaccess”です。

RewriteEngine On
RewriteRule ^test.html$ https://www.yahoo.co.jp

RewriteRuleの文法は以下の通りです。

RewriteRule [パスパターン] [置換URL] [フラグ]

RewriteRuleの詳しい使い方についてさらに解説します!

RewriteRuleの設定方法

ここからは、RewriteRuleの書き方について解説します。先ほどRewriteRuleの文法について解説しました。RewriteRuleには以下の3つを指定することができます。

  • パスパターン
  • 置換URL
  • フラグ

これらの設定をどのようにすればよいのか、詳しく解説します。

RewriteRuleのパスパターン

まず、RewriteRuleのパスパターンについてです。パスパターンは、URLのパスに当てはまる条件を指定します。

例えば、「https://test.com/test.html」のtest.htmlの部分を条件にしたい場合は、以下のように記述します。

RewriteRule ^test.html$ [置換URL]

パスパターンは正規表現を使って記述しています。正規表現については、こちらの記事で詳しく解説しています。

正規表現とは?Linuxで正規表現を使ってファイル検索してみよう【分かりやすく解説】

RewriteRuleでは、パスだけでしか条件を判定できませんが、”RewriteCond”を使用するとさらに複雑な条件を識別することができます。

置換URL

置換URLはパスパターンにマッチした場合に、リライトやリダイレクトをする先のパスやURLを記述します。

例えば、特定のパスにリライトする場合は以下のように記述します。

RewriteRule ^test.html$ hoge.html

特定のURLへリダイレクトする場合は、以下のように記述します。

RewriteRule ^test.html$ https://www.yahoo.co.jp

また、正規表現の後方参照を使用して、パスにマッチした部分を置換URLとして使用することができます。例えば、「http://localhost/test/page/」でtest部分だけを書き換える場合に以下のように設定します。

RewriteRule ^test/(.*)$ /hoge/$1

フラグの設定について

フラグの設定では、Rewriteの挙動を変更することができます。良く使用するフラグを紹介します。

まずはリダイレクトです。リダイレクトは”R”を指定します。さらにコードを指定することで、リダイレクトの挙動も設定できます。こちらは301リダイレクトを実行しています。

RewriteRule ^test.html$ https://www.yahoo.co.jp [R=301]

次に”QSA”フラグです。このフラグではクエリ文字列をそのまま置換した値に含めるフラグです。

例えば、「http://localhost/test.html?num=1」のようなクエリが付与されている場合、リライト先にもクエリも付与します。

RewriteRule ^test.html$ hoge.html [QSA]

ApacheでRewriteの設定方法まとめ

今回の記事では、ApacheのRewriteの設定方法について解説しました。RewriteはWebアプリを構築すると、よく使うので覚えておきましょう!

このようなITに関連する内容を当ブログでは、発信しているので興味のある方は、是非ご覧ください。

さらにlinuxについて勉強したい方はこちらの参考書がオススメです。

ABOUT ME
ryu@InfraAcademyというインフラ学習サービス運営
大手企業→上場ベンチャー→スタートアップでエンジニアをしていました。 インフラエンジニア歴10年以上。 Linuxやネットワークの学習ができるサービスInfraAcademyを運営中。
RELATED POST