adiaryからWordPressに自動転送するための.htaccess設定方法

長年ウェブサイトを運営していると、ブログシステムの変更や階層構造の変更によって、記事移動による転送作業の必要性が生じてくる。

WordPress同士の移動であれば、Wordpressのプラグイン「Redirection」を使うと、「WordPress A」から「WordPress B」へと簡単に自動転送できる。

関連記事:WordPressにプラグインをインストールして制作環境を整える

しかし、adiaryからWordPressの場合、「Redirection」のような自動転送できるプラグインは存在しないので、.htaccessにプログラムを書き込んでサーバに手動でアップロードして制御する必要がある。

今回は、adiary時代の記事番号を記したURLがほとんど分からなくなっているので、「WEBサイト A」から「WEBサイト B」のトップページに移動することを前提にしている。

※「WEBサイト A」は、以前にadiaryのcgiファイルを消去済みで、今は跡地になっている

.htaccess

WordPress同士の.htaccess設定

関連記事:WordPressプラグインのRedirectionで移動先に自動転送させる

adiaryからWordPressの.htaccess設定

より適切な方法が見つかった。

関連記事:CORESERVERでWordPress削除前と削除後時の.htaccess設定方法

旧サイトの.htaccess設定

▽ .htaccessの内容

RedirectMatch /* http://サイトA.com/

新サイトの.htaccess設定

▽ .htaccessの内容

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ – [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

簡単な説明

「旧サイトの.htaccess設定」の.htaccessを記述すると、「サイトA」から「サイトB」に移動する。

ただし、「サイトA」の階層構造そのままの状態で転送されるゆえに、「サイトA/コンテンツβ」から「サイトB/コンテンツβ」に移動してしまう。

移転先には、該当する記事が存在しない(または記事番号が変更されている)ので、本来記事が書かれている部分には「404 Not Found」と表示される。

そこで、「新サイトの.htaccess設定」の.htaccessを記述することによって、「サイトA/コンテンツβ」から「サイトB」に移動するようになる。

余談だが、「サイトB」に「サイトA/コンテンツβ」と同じような.htaccessのプログラムを記述すると、「サイトA」のトップページにアクセスしても「サイトB」に移動してしまい、「サイトA」にアクセスできなくなった。

▽ .htaccessの内容

RedirectMatch /* http://サイトB.com/

その他

.htaccessについて詳しく知りたい人は、道すがら講堂の「ここ数週間でやってきたことまとめ - 301リダイレクト記述方法」を参照ください。