先日、.htaccessを用いた301リダイレクトで不思議な現象が起きた。

以下のように、本ドメインのサブディレクトリをサブドメインサイトとして扱いたかったので、.htaccessで301リダイレクトをかけようとした。

https://example.com/sub/
↓ リダイレクト
https://sub.example.com/

通常よく使う301リダイレクトは、以下のような書き方をしていたのだが、なぜかリダイレクトがされなかったのだ。

RewriteRule ^sub/$ https://sub.example.com/ [R=301,L]

色々調べた結果、301リダイレクトには別の書き方もあるようで、こちらの書き方であれば正常にリダイレクトがおこなわれた。

RedirectMatch 301 ^/sub/(.*)$ https://sub.example.com/$1

結局原因はわからなかったが、.htaccessによるリダイレクトがうまくいかない時は、こちらの書き方を試してみると良いだろう。