.htaccess 301リダイレクト メモ

2018.10

◆ .htaccessについて

.htaccess ファイルとは何かについては、.htaccessとは?(Qiita様)などを参照してください。

無料レンタルサーバなどでは .htaccess を無効にしているところもあります。サーバの仕様を確認してください。(XREA様は使えます)

◆ 正規表現

.htaccessは正規表現という記号セットを使います。

正規表現についてここで詳しくは説明できませんが、最低限の説明をしておきます。

RewriteRuleコマンドの引数第一項にある ^ は「先頭」を意味する記号で、$ は「末尾」という記号です。 (.*)は任意の文字を意味します。第一項の (.*) にマッチした文字列が第二項の $1 に代入されます。 そして第二項が意味するアドレスに飛ぶという仕組みになります。 (具体例は基本編以降参照)

RewriteRule 第一項 第二項 [R=301,L]

◆ Rewrite機能をONにする

RewriteRuleコマンドより前に、Rewrite機能をONにする命令を書きます。(最初にひとつ書けばOK)

RewriteEngine on

◆ 基本編

ページ単位のリダイレクト

旧URL http://example.com/old.html
新URL http://example.com/new.html

RewriteRule ^old.html$ /new.html [R=301,L]

ディレクトリ単位のリダイレクト

旧URL http://example.com/old/aaa.html
旧URL http://example.com/old/bbb.html
新URL http://example.com/new/aaa.html
新URL http://example.com/new/bbb.html

RewriteRule ^old/(.*)$ /new/$1 [R=301,L]

ドメイン全体のリダイレクト(サーバー引っ越しなど)

旧URL http://example-old.com/
新URL http://example-new.com/

RewriteRule ^(.*)$ http://example-new.com/$1 [R=301,L]

◆ 応用編

※第一項、第二項のみ記述。(RewriteRule と [R=301,L] は省略)

ディレクトリの扱い

旧URL http://example.com/test/old.html
新URL http://example.com/test/new.html

^test/old.html$ /test/new.html

↑は .htaccess を / に置いた場合の書き方です。普通は .htaccess は / に置き、このような書き方をしておけばいいです。

(A) ^old.html$ /test/new.html ○
(B) ^old.html$ new.html    ×

↑は .htaccess を /test/ に置いた場合の書き方です。 Bの書き方でもうまくいきそうですが、Aのように書かないとうまく飛びません。
第一項は相対パスでよいですが、第二項はフルパスで書く必要があるようです。Bでどこに飛ぶかはサーバの設定によります。(注意)

ドメイン&ディレクトリの同時変更

旧URL http://example-old.com/aaa/
新URL http://example-new.com/bbb/

^aaa/(.*)$ http://example-new.com/bbb/$1

旧URL http://example-old.com/aaa/
新URL http://example-new.com/

^aaa/(.*)$ http://example-new.com/$1

◆ www あり&なしの統一

RewriteCondというコマンドを使います。条件指定に合致した場合のみ、次行のRewriteRuleが執行されます。

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

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

上は www ありに、下は www なしにそろえる方法です。

こうして表示をそろえる方法を正規化といいます。 正規化についてはHTMLクイックリファレンス様なども参考にしてみてください。

送料無料!壊れていてもOK!!パソコン&家電回収が0円

その他の注意点

.htaccessはブラウザがキャッシュしてしまうらしく、ブラウザで確認しながら.htaccessを編集すると、変更がうまく反映されないことがあります。

WWWCなどの http ソフトで確認した方がやりやすいかもしれません。