type5 default featured image

さくらレンタルサーバで.htaccessでmod_rewriteを利用してリダイレクトする

さて、nucleusからwordpressに引越しをしたわけですが、
なんといってもまずは(デザインもやりたいけれど)URLのリライトです。

こんなブログでも検索エンジンにインデックスされているページも結構あるし、
せっかく検索から来た人がコンテンツがない状態というのは、可哀想。

ということで、SEO的にもOKと言われている301リダイレクト(moved permanently)を利用して、
それぞれのページをリダイレクトすることにしました。

さくらのレンタルサーバ(スタンダード)を利用しているのですが、
これは.htaccessが利用できるとのことなので、.htaccessでやることにしました。

まず、URL体系なのですが、これまでnucleusを利用していた場合、

https://www.type5.org/blog/index.php?itemid=357

というURLで、index.phpにitemidというエントリごとにふられているパラメータを渡すことで個別のページの表示をしています。

一方、wordpressの場合デフォルトは

https://www.type5.org/wp/?p=123

になるのですが、「設定」-「パーマリンク設定」から

https://www.type5.org/wp/123

というパラメータ無しのURLに変更しています。
(なお、wordpressではデフォルトでブログディレクトリトップに.htaccessを生成し、
 それを管理画面からかんたんに編集できるようです。すごいねえ)


移行の際に、上記のパラメータ(nucleus上のitemidとwordpress上のentryid)を合わせようかと思ったのですが、wordpressはいろんなアクティビティ別にこのIDを発行するらしく、あわせるのは結構面倒くさい。(パラメータが合っていれば、上位ディレクトリの書き換えだけで済むので楽ですが)

という訳で、ちょっと力技なのですが、よくアクセスのあるTOP20くらいのURLを個別に移行先のURLにリダイレクトする方法を選択しました。

www配下に.htaccessを作成して、以下のように追記しています。

Redirect permanent /blog/ https://www.type5.org/wp/
RewriteEngine on
RewriteBase /blog
RewriteCond %{QUERY_STRING} (^|&)itemid=457(&|$)
RewriteRule ^blog/index\.php$ /wp/466? [L,R=301]
・・・

まず、これまで/blogで運用していたものを/wpで運用しますので、
/blogあてにアクセスが来た場合は、すべて/wpにリダイレクトします。(これも301)

次にRewriteEngineを利用する設定、リライトするベースURLを設定。

次(4行目)に、パラメータでリダイレクトする場合単純にRewriteRuleでは条件が決めれないらしいので、RewriteCondを使います。条件を追記していきます。
%{QUERY_STRING}はパラメータ(?)を、(^|&)itemid=457(&|$)は?itemid=457ではじまり、&のパラメータでしか終わらないという意味です。

続いて、ルールです。^blog/index\.php$ は^は行頭、index\.phpは.がエスケープされているだけ、$は行末を意味します。つまり、blog/index.phpに上記のパラメータつきで来た場合、次の場所(/wp/466?)にリダイレクトという意味ですね。(ここの?は重要で、?が無いとパラメータが引き継がれてしまうらしいです)

このあたりを参考にしました。(hatenaで聞くとこだったわ。。。w)

http://blog.btmup.com/seo/htaccess-301-redirect-per-page.htmlhttp://webtech.akijapan.com/htaccess/rewrite.phtmlhttp://webcre8.jp/investigate/tips-htaccess-redirect.htmlhttp://q.hatena.ne.jp/1341680846 (これがドンズバの情報でした!)


というわけで、めでたく、引越し完了しました! enjoy!

No comments yet