.htaccessのリダイレクトでよく使う正規表現
技術情報
.htaccessのリダイレクトでよく使う正規表現をまとめてみました。
目次
この記事の目次です。
1. .htaccessのRewriteRuleなどで使う正規表現とは何か?
2. .htaccessでよく使う「^」の意味
3. .htaccessでよく使う「$」の意味
4. .htaccessでよく使う「\.」の意味
5. .htaccessでよく使う「.」の意味
6. .htaccessでよく使う「*」の意味
7. .htaccessでよく使う「$1」の意味
1. .htaccessのRewriteRuleなどで使う正規表現とは何か?
はじめに、RewriteRuleなど.htaccessので使用できる正規表現についてです。
正規表現とは
正規表現は、テキストのパターンを表現する方式の一つです。 例えば、 すべての "images" ディレクトリの下の、すべての .gif と .jpg ファイル は /images/.*(jpg|gif)$ と書くことができます。
.htaccess(Apache HTTP Server)で使用できる正規表現
.htaccess(Apache HTTP Server)では、PCREライブラリが提供するPerl互換正規表現が使用できます。
2. .htaccessでよく使う「^」の意味
.htaccessのリダイレクトでよく使う正規表現の1つ目は「^」です。
URLやパスの始まりを表す場合は「^」を使用します。
例)^htaccess-support\.com$
3. .htaccessでよく使う「$」の意味
.htaccessのリダイレクトでよく使う正規表現の2つ目は「$」です。
URLやパスなどの文字列の終わりを表す場合は「$」を使用します。
例)^htaccess-support\.com$
4. .htaccessでよく使う「\.」の意味
.htaccessのリダイレクトでよく使う正規表現の3つ目は「\.」です。
正規表現で使用する文字に「.」がありますので、ドメインの「.」は「\.」で表現します。
例)^htaccess-support\.com$
5. .htaccessでよく使う「.」の意味
.htaccessのリダイレクトでよく使う正規表現の4つ目は「.」です。 「htaccess-support.com」とした場合は「htaccess-support.com」「htaccess-supportacom」「htaccess-supportbcom」・・・という文字列がヒットします。 ドメインの「.」を「\.」にしなくてもヒットする場合が多そうですね。
6. .htaccessでよく使う「*」の意味
.htaccessのリダイレクトでよく使う正規表現の5つ目は「*」です。 正規表現では「*」は直前の1文字を0回以上繰り返す場合にヒットします。 「.*」とすると任意の文字列が表現できます。
7. .htaccessでよく使う「$1」の意味
6つ目は「$1」です。 正しくは正規表現ではありませんが、正規表現と関連した.htaccessのリダイレクトでよく使うので取り上げました。
$1の意味
$1は、指定されて受け取ったURLを再利用するための変数です。 正規表現から最初に取り込まれたグループを意味する変数です。 正規表現の (と) の間の内容が再利用できます。
$1の例
たとえば、以下のリダイレクトの記述がある場合、「^(.*)」の条件に一致したURL(ドメインの次以降の文字列)を$1に当てはめることができます。
RewriteRule ^(.*) https://my.domain.com/$1 [R=301,L]
$2も使える
正規表現に2番目の括弧のセットがある場合、$2にはその括弧の内容が含まれます。
RewriteRule ([a-z0-9/-]+)-([a-z]+).html$ $1-$2.php [NC,L,QSA]
関連記事
関連記事です。
リダイレクト
用語の意味や.htaccessの設定(正規表現やパラメータ)などリダイレクトについて解説しています。
参考)正規表現のサンプル
正規表現のサンプルです。
ドメイン名を表す正規表現
ドメイン名を表す正規表現の例です。
^((?!-)[A-Za-z0-9-]{1, 63}(?<!-)\.)+[A-Za-z]{2, 6}$
更新履歴
更新履歴になります。
- 2022/7/30 .htaccessのRewriteRuleなどで使う正規表現とは何かについて追記しました。
- 2022/5/24 正規表現のサンプルを追記しました。
- 2022/1/12 $1の意味について追記しました。
- 2021/10/11 記事をアップしました。