リダイレクトに使うRewriteRuleとRedirect permanentの違い

htaccessを使ったリダイレクト

ドメイン変更を伴うサイトの移転、Webサーバーの変更などの際にhtaccessを使ったリダイレクト処理(主にApache)を行うことがあります。

たまにしか利用しない記述を使うため試行錯誤の結果処理が済めば結果オーライで、マヤモヤがすっきりしないまま次のリダイレクトの機会に同じく躓いてしまったという経験はないでしょうか。

異なる2つの記述

リダイレクトについて、分かっているようで理解し切れていない釈然としない原因を追及してみて、リダイレクトについての記述の方法には大きく分けて2つの手法があることに気づきました。

RewriteRuleを使う方法

.htaccessを使ったリダイレクトを行う場合、覚えておいて間違いないのがこちらのRewriteRuleを使った方法です。

WordPressなどCMSで自動的に生成されたパーマリンクを後で別なURLへ転送したいときなどに使用できます。

パラメータ付きのURLを転送したい場合などは、この「RewriteRule」を使用した記述をしないと面倒なばかりかリダイレクトが上手くいかなかったりします。

良く言えば、RewriteRuleを使った方法ではより複雑な処理が可能であると言ったところでしょう。

なお、RewriteRuleを使った記述では、サーバーでApacheの拡張機能であるmod_rewriteが使用可能な状態に設定されている必要があります。

単純な処理はRedirect permanent

ページ数の少ない静的URLからリダイレクトする場合には「Redirect permanent」を使った方法で簡単に301リダイレクトが可能です。

単純なドメインの変更やディレクトリの変更などの場合に使えます。

静的コンテンツが多かった時代には、こちらの方法で十分だったということでしょう。

mod_rewriteが必要なRewriteRule

昨今ではWordPressなどCMSを使ったコンテンツが多いことを考えると、覚えておいた方がよいのは「RewriteRule」のほうですが、実はRewriteRuleを使った301転送が可能かどうかは、Webサーバー(Apache)の設定に依存します。

具体的には「mod_rewrite」というApacheの拡張モジュールが有効になっている必要があります。

とは言ってもCMSの利用が多いことを考慮してか、大手のサーバー会社ではRewriteRuleが利用できる場合が多いようです。

サーバーにより必要な記述

RewriteRuleが利用できるサーバーであっても、.htaccessにOptions +SymLinksIfOwnerMatchを記述しないと上手く機能しないサーバーも存在します。

この辺は希なケースかと思いますが、知識がないとその都度調べることになり大変です。

リダイレクトが楽になるコンテンツ管理

こうしたリダイレクトに関する操作で戸惑わないためには、サーバー契約時にmod_rewriteが利用可能かどうか調べておきたいですが、サーバー移転となると、どうしてもハードウェアのスペックや転送速度などを重視してしまいがちなのが実際のところでしょう。

またWordPressが自動生成するパラメータ付きのパーマリンクは、作成したコンテンツを管理していく上で任意のテキスト文字(英字)に書き換えておいた方が無難です。

この辺を分かり易くしておくことで、アクセス解析でどのページの閲覧が多いかと言ったことや、リダイレクトをする際に、どの内容のページが上手く転送できていないかなどを判断できるようになります。

また、今回のように、RewriteRuleを使うべきかRedirect permanentで十分なのか迷うパターンとして、以前にRedirect permanentを使ってリダイレクトした記述がhtaccessファイルに残っていた場合などもあるでしょう。

以前の方法と同じく「Redirect permanent」を使いリダイレクトを試みたが、上手く転送できず。調べてみるとRewriteRuleを使ったリダイレクトに関する情報が出てきて迷ってしまうパターンです。

こうした場合は、mod_rewriteが使えるサーバーであればRewriteRuleを使う方法に改めてリダイレクトをしたほうが、この先も柔軟な対応が可能ですので、これを機会にRewriteRuleを使った記述に対応させることも検討しても良いでしょう。

最近ではNginxを使ったサーバー少なくなく、なかなかApache特有の技術まで踏み込んで知識を得る機会というのは少ないのが事実です。

私も、この2つの転送方法の違いを理解できて、やっと痒いところに 手が届いた感じです。

リダイレクト関連

301リダイレクト サブドメインからサブディレクトリへのリダイレクト設定

おすすめ記事

RSSフィードはリダイレクトで受け取れるか サブディレクトリからサブドメインへ移行したサイトでRSSフィードによる通知はリダイレクトで受信可能か FTPアプリでファイル転送 スマホのFTPアプリAndFTPで接続名を変更する方法【設定済みの接続をコピー】 さくらのブログからワードプレス さくらのブログからWordPressへの引越し【決断に至った理由と作業の経過】 WordPressの管理者向け機能 WordPressとは何なのか「CMS?」な人や初心者向けに図入りで解説