(Redirect Match)FC2ブログ「記事」URL再転送
FC2ブログからWordPressの各記事に対してURL転送を行う際に
一旦サーバーへ転送を行った後のWordPress形式URLへ置換する
Redirectディレクティブを利用した記述例についてご紹介します。
.htaccessによるURL転送方法(Redirect Match)
.htaccessによってURLの転送(置換)を行う際には、
様々な記述方法が利用できます。
ここではFC2ブログ形式のURLから移転先のドメイン名のみを変更し、
一旦移転先のサーバーへ転送を行うことを想定しています。
FC2の記事(個別投稿)のURLを、
WordPressで利用されるURL形式に置換する例をご紹介します。
ただ、個別記事は基本的に1対1のURL対応関係がありますので、
特別な条件指定などの必要はありません。
ここでは、以下のURLによってFC2ブログからmetaタグ転送が行われたURLを、
WordPressの各パーマリンク形式のURLに置き換える例をご紹介します。
以下はそれぞれの転送パターンの動作確認環境です。
転送例/パーマリンク | デフォルト | 日付と投稿名 | 数字ベース | 投稿名 | カスタム構造 |
---|---|---|---|---|---|
Redirect | blog-entry-101.html | blog-entry-102.html | blog-entry-103.html | blog-entry-104.html | blog-entry-105.html |
RedirectPermanent | blog-entry-106.html | blog-entry-107.html | blog-entry-108.html | blog-entry-109.html | blog-entry-110.html |
Redirect Match | blog-entry-111.html | blog-entry-112.html | blog-entry-113.html | blog-entry-114.html | blog-entry-115.html |
mod_rewrite | blog-entry-116.html | blog-entry-117.html | blog-entry-118.html | blog-entry-119.html | blog-entry-120.html |
置き換える先のURLの例はここでは外部のサイトを指定して例示しますが、
通常は同じドメイン(移行先のWordPressのドメイン)を指定することになります。
※例示においてはWordPressのパーマリンク設定は1サイト内で1設定の為です。
Redirect Match
Redirect Matchディレクティブを利用したURL転送(置換)によって、
URL形式を変換する例をご紹介します。
敢えてマッチングを行う必要はないのですが、
正規表現による条件指定による転送を記述にしています。
Redirect Matchディレクティブにおいて、ステータスコードを省略した場合には、
「302 Found」が返されて、一時的なURL転送として動作します。
移転元、移転先のURLマッピング
パーマリンク設定 | 転送元先 | 検証用転送先URL |
---|---|---|
デフォルト | 転送元→ | http://post-rm-fc2.freeblg.info/blog-entry-111.html |
→転送先 | http://url-default.rensrv.com/?p=17 | |
日付と投稿名 | 転送元→ | http://post-rm-fc2.freeblg.info/blog-entry-112.html |
→転送先 | http://url-monthpost.rensrv.com/2014/12/112-redirect-datepost/ | |
数字ベース | 転送元→ | http://post-rm-fc2.freeblg.info/blog-entry-113.html |
→転送先 | http://url-unmbase.rensrv.com/archives/6 | |
投稿名 | 転送元→ | http://post-rm-fc2.freeblg.info/blog-entry-114.html |
→転送先 | http://url-post.rensrv.com/114-redirect-match-post/ | |
カスタム構造 | 転送元→ | http://post-rm-fc2.freeblg.info/blog-entry-115.html |
→転送先 | http://url-html.rensrv.com/115-redirect-match.html |
その他の記述例については以下でご紹介しています。
デフォルト
パーマリンクがデフォルト設定のURLへ
転送を行う場合のサンプルURLは以下です。
すぐに転送され以下のURLにページが遷移します。
http://url-default.rensrv.com/?p=17
.htaccess記述例
Redirectディレクティブを利用したURL転送例は以下のようになります。
1 |
RedirectMatch 301 ^.*111\.html$ http://url-default.rensrv.com/?p=17 |
日付と投稿名
パーマリンクがデフォルト設定のURLへ
転送を行う場合のサンプルURLは以下です。
すぐに転送され以下のURLにページが遷移します。
http://url-monthpost.rensrv.com/2014/12/112-redirect-datepost/
.htaccess記述例
Redirectディレクティブを利用したURL転送例は以下のようになります。
1 |
RedirectMatch 301 ^.*112\.html$ http://url-monthpost.rensrv.com/2014/12/112-redirect-datepost/ |
数字ベース
パーマリンクがデフォルト設定のURLへ
転送を行う場合のサンプルURLは以下です。
すぐに転送され以下のURLにページが遷移します。
http://url-unmbase.rensrv.com/archives/6
.htaccess記述例
Redirectディレクティブを利用したURL転送例は以下のようになります。
1 |
RedirectMatch 301 ^.*113\.html$ http://url-unmbase.rensrv.com/archives/6 |
投稿名
パーマリンクがデフォルト設定のURLへ
転送を行う場合のサンプルURLは以下です。
すぐに転送され以下のURLにページが遷移します。
http://url-post.rensrv.com/114-redirect-match-post/
.htaccess記述例
Redirectディレクティブを利用したURL転送例は以下のようになります。
1 |
RedirectMatch 301 ^.*114\.html$ http://url-post.rensrv.com/114-redirect-match-post/ |
カスタム構造(静的html例)
パーマリンクがデフォルト設定のURLへ
転送を行う場合のサンプルURLは以下です。
すぐに転送され以下のURLにページが遷移します。
http://url-html.rensrv.com/115-redirect-match.html
.htaccess記述例
Redirectディレクティブを利用したURL転送例は以下のようになります。
1 |
RedirectMatch 301 ^.*115\.html$ http://url-html.rensrv.com/115-redirect-match.html |
Redirect Matchディレクティブでは、条件に一致するようなパターンを、
正規表現を用いて指定することができます。
例では1対1対応のURLマッピングですが、
正規表現に指定した条件内に含まれるURLを利用して、
転送先のURLを組み立てて(変数利用)指定することもできます。
Redirect Matchによる変数利用の例
以下は、FC2ブログ形式の年月別アーカイブページを、
WordPress形式の年月アーカイブページのURLに転送する例です。
転送元URL: http://fwding.blog.fc2.com/blog-date-20141125.html
転送先URL: http://post-rm-fc2.freeblg.info/2014/11/25
※末尾にスラッシュがないのは、パーマリンク設定で「.html」を固定文字として入力し、
静的URL形式を採用している環境の為。
転送元のhttp://fwding.blog.fc2.com/側でmetaタグによって、
http://post-rm-fc2.freeblg.info/blog-date-20141125.html へ一旦転送を行っていることとしています。
その後、http://post-rm-fc2.freeblg.info/blog-date-20141125.html のURLを、
http://post-rm-fc2.freeblg.info/2014/11/25 に再転送を行う .htaccess の指定例です。
1 |
RedirectMatch 301 ^/blog-date-(.{4})(.{2})(.{2})\.html$ http://fc2.freeblg.info/$1/$2/$3 |
URL置換指定は以下のようになっています。
この場合のURLの置換概要を図にすると以下のようになります。
要求されたURLが「/blog-date-」で始まっている文字列で、
任意の4文字(西暦)「.{4}」、任意の2文字(月)「.{2}」、任意の2文字(日)「.{2}」と続く形式であること。
そして、URLの末尾が「.html」で終了していること。
この条件を満たすURL形式である場合にURLの置換が行われます。
URL置換の際には、それぞれ括弧()で囲った部分を変数として利用しています。
なお「^」記号は要求パスの最初部分を意味し「$」記号は要求パスの最後を意味しています。
※「\」はブラウザ表示上はバックスラッシュですがテキストエディタ上は半角の「¥」記号になります。
半角の「¥」記号はエスケープ記号で本来任意の1文字の意味を持つ「. (ドット)」を、
文字としての「. 」として指定するという指示です。
結果「.html」という拡張子を表す文字列を表しています。
変数化した部分は、転送先URL側でそれぞれ、$1・$2・$3に対応して挿入されます。
「blog-date-20141125.html」では、以下の値が$1・$2・$3に設定されていることになります。
- $1: 2014
- $2: 11
- $3: 25
結果、http://post-rm-fc2.freeblg.info/$1/$2/$3 は、
http://fc2.freeblg.info/2014/11/25 というURLへの要求に置換されます。
以下は実際の動作例です。
すぐにURLが転送され以下のURLが表示されます。
このページはWordPressの 2014/11/25 に投稿された投稿のアーカイブページです。
http://fc2.freeblg.info/2014/11/25
このようにしてRedirect Matchディレクティブでは、
年月日や連番といったような一部のみが変化するURL形式などを、
1つの定義で共通化してURL置換を行うことができるようになります。
また置換条件に該当するときだけ、URL転送が行える点も便利です。
WordPressによる初期設定と共存時の注意
URLの転送を行う場合には、
WordPressでパーマリンク設定を行うと自動的に生成される
.htaccessファイルにURL転送ルールを記述することになりますが、
以下のような初期状態で記述されている内容は、
消さないように注意します。
また「# BEGIN WordPress ~ # END WordPress」までは、
WordPressが削除・更新をしてくる部分なので、この中には記述しないようにします。
個別に追記する場合には、# BEGIN WordPressよりも前の行に、
個別のURL転送を記載するといいでしょう。
1 2 3 4 5 6 7 8 9 10 11 |
# BEGIN WordPress <IfModule mod_rewrite.c> RewriteEngine On RewriteBase / RewriteRule ^index\.php$ - [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index.php [L] </IfModule> # END WordPress |
さいごに
記事の1対1対応のような場合は、
Redirect Matchディレクティブを利用するほどのものではありません。
しかし他のURL転送と記述方法を統一するような場合には、
こうした記述方法をあえて採用するのも一つの選択肢です。
WordPressはWordPress Foundation の登録商標(第5049965号)です。
WordPressロゴ、アイコンその他のマーク等はWordPress Foundation の商標であり、
WordPress Foundation の著作物です。
WordPress.comはWordPress Foundation が管理運営を行うドメインならびにサービスの名称です。
WordPress.com、WordPress.net、WordPress.org、WordPress.tv、
WordPressFoundation.orgはWordPress Foundationが
管理運営を行なう正式なトップレベルドメインであるとともに、
WordPress Foundationが運営を行うサービスの名称です。
wordpressはFree Software Foundation, Inc.によってGPL2+でライセンスされています。
FC2はFC2, Inc.の商標であり、FC2ブログはFC2, Inc.のサービス名称です。
FC2ロゴ、アイコンその他のマーク等はFC2, Inc.の商標であり、FC2, Inc.の著作物です。
公開日:
最終更新日:2014/12/22