はてなブログ標準URLで移行したワードプレスのパーマリンクを投稿名に変更(2019年版)

SPONSORED LINK

はてなブログ標準URL形式でワードプレスに移行したブログのパーマリンクを変更し、301リダイレクトの設定をしたので、簡単だがその作業ログを公開する。

パーマリンク変更に至るまで

2017年まではてなブログを使っていたが、記事の投稿ははてなブログの標準形式(/entry/年/月/日/数字)で投稿していた。

  • 【はてなブログの標準形式】
  • 【はてなブログのカスタムURL形式】

はてなブログのカスタムURL形式に設定すると、「entry」の部分だけは外せないが、/年/月/日の部分がなく、数字の部分も任意の名前を付ける事が出来る。

カスタムURL形式の利点はワードプレスに移行しても、ある程度同じようなパーマリンクとなり、移行や投稿が楽になる事がある。
また、数字だと見た目で何の記事か分からないが、任意名だと記事の内容の推測が付くので、アクセス解析などでも見た目で分かり易くなる。

本来は、はてなブログ使用中にカスタムURL形式に変更していれば、移行でもっと楽が出来たのだが、当事は全くそういった事を考えていなかった。
実際に2017年にワードプレスに移行した際も余裕がなく、以下のパーマリンクの形式で移行してしまった。

  • 【このブログのワードプレスへの移行形式】

このあたりは、以下の記事にまとめているので、合わせて参照していただければと思う。

2017年2月10日に5年間使ったはてなブログProからレンタルサーバー+Wordpressへ移行を行いました。はてなブログからWordpressへ移行を検討している人も多いと思います。...

entry年月日が付いたパーマリンク形式でも特に問題はないが、ワードプレスで記事を投稿する時の年月日がそのままURLに設定され、古い記事になると年月日が古いと見て分かってしまうことがデメリットといえる。URLが無駄に長くなるよりもシンプルにしたいのもあった。

そこで、今回、移行から2年以上経つが、ワードプレスのパーマリンクを投稿名(sample-post)に設定し直した。
また、旧URLから新URLへの301リダイレクト設定を行った。
以下は、作業内容と、参考にさせていただいたエントリーを掲載する。

作業前の状態

  • バージョン:WordPress 5.2.3, PHP 7.2.17
  • レンタルサーバー:エックスサーバー
  • 記事数:300数件
  • パーマリンク設定:カスタム構造(/entry/%year%/%monthnum%/%day%/%postname%)

注意:本エントリーを読まれる際の注意事項

  • 本エントリーの内容はWordpressの移行や設定を何等保障するものではありません。

SPONSORED LINK

ワードプレスのパーマリンク変更作業

ワードプレスのバックアップを取得

作業前に、ワードプレスのデータベースバックアップを行う。
レンタルサーバーのphpMyAdminでデータベースバックアップを取得する。
public_htmlフォルダ以下もFFFTPで丸ごとダウンロードしておけば、問題が発生しても今の状態まで戻す事が出来る。

現状のURLの一覧表を作る

現状を記録しておくため、URLの一覧表を表計算ソフトなどで作成する。
また、301リダイレクト設定後に、リダイレクトがちゃんとされていることをこの一覧表で確認する。

ワードプレスのパーマリンク設定の変更

ワードプレスのダッシュボードの設定>パーマリンク設定からパーマリンク設定を「投稿名(sample-post)」に変更する

  • 変更前:
    カスタム構造(/entry/%year%/%monthnum%/%day%/%postname%)
  • 変更後:「投稿名」形式に変更
    投稿名(sample-post)

変更を保存を押す。

この変更を行うと、全ての投稿記事のURLは「ドメイン/%postname%/」に即座に変更される。
今までのURLの外部リンクと内部リンクは全て切れるため、正常にアクセス出来るように、以下の301リダイレクト設定をする。
(301リダイレクト設定しないと既存の記事の検索評価は全てリセットされる。)

パーマリンクを変更した記事のURLの一覧表を作る

パーマリンクを変更後のURLチェックする為に一覧表を作る。
やり方などは現状URLを記録した方法と同じやり方で行う。
これで旧新のURLの一覧表を取得したことになる。

301リダイレクト設定をする

ここからは、旧パーマリンクから新パーマリンクへリダイレクト(301リダイレクト)設定をする内容となる。
リダイレクト設定は、.htaccessを編集したり、プラグインを使ったりと、幾つかの方法がある。

 

 

プラグインを使う場合、作業の手間や時間が少ないことが利点だが、プラグイン自体が動作保証されていないことがデメリットとなる。.htaccessに直接書く方が長期的に見るとリスクは低い。
また、レンタルサーバーではプラグインを常時起動すると動作が重くなるため、プラグインはなるべく減らしたい。
このことから、このサイトでは.htaccessでリダイレクト設定をすることとした。

リダイレクト設定方法の種類

.htaccessで301リダイレクトを設定する方法は、調べた限りでは2パターンある。

  1. 正規表現を使って変換処理を.htaccessに1行で書く
  2. 旧と新のパーマリンク(URL)の1対1の変換表を作り、変換するURLを全て.htaccessに全て書く

方法2の場合、301リダイレクトの一覧表を作り、全てを.htaccessに貼り付ける機械的なやり方になる。
変換表の方が機械的に出来そうだったが、.htaccessが物凄く長くなってしまうため、正規表現で1行で書くやり方を行う事とした。

正規表現で1行で書く場合、はてなブログの標準形式で「/entry/%year%/%monthnum%/%day%/%postname%」としていたため、entry以下余分な部分を削除するため、.htaccessに以下の処理を追加する。

この正規表現により、旧URL形式である「/entry/%year%/%monthnum%/%day%/%postname%」でアクセスされた場合、301リダイレクト時にentry以下の部分が削られ、URLが「/%postname%」だけになってアクセスされる。

.htaccessに301リダイレクトを追加する

FFFTPでレンタルサーバーにアクセスする。
/ドメイン名のフォルダ/public_htmlフォルダにアクセスし、.htaccessをダウンロード。
(直接サーバーパネルからやってもいいが、ローカルで編集したファイルをサーバーアップロードする方が確実のため。)

以下、PCローカルで作業する。

  • .htaccessのバックアップをコピーして保存。
  • .htaccessをSakuraなどで開いて編集。(UTF-8で編集する)
  • .htaccessに以下のリダイレクト設定を記述する。(コメントの# BEGIN WordPressの前に記述する)

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^entry/([0-9]{4})/([0-9]{2})/([0-9]{2})/(.*)$ /$4 [R=301,L]
</IfModule>
# BEGIN WordPress

.htaccessを保存したら、FFFTPでサーバーへアップロードして上書きする。
先ほどダウンロードしてきた場所に.htaccessをアップロードすると上書きされる。

一旦、ワードプレスのダッシュボードにアクセスが出来るかどうかを確認する。(特に問題なくダッシュボードにアクセス出来た。)
ダッシュボードにアクセス出来なくなった場合、バックアップしておいた.htaccessをFFFTPで戻す。

動作確認

以下の動作確認を行う。

URLの遷移動作のチェック

  • 旧URL一覧表で旧URLが新URLにリダイレクトされる事を確認する。

    変更前のURL形式
    https://example.com/entry/yyyy/mm/dd/postname
    ↓(変更後のURL形式にリダイレクトされるはず)
    https://example.com/postname/

    幾つかURLをブラウザに入れて表示を試したが、特に問題なく旧URLが新URLにリダイレクトされた。

  • 新URL一覧表で新URLが正常表示されることを確認する。

    特に問題なく表示された。

  • 表示されない場合は、ブラウザのキャッシュを削除して試してみる。

リダイレクトの301コードのチェック

リダイレクトされた際に「301コード」が取れているかを確認する。
確認の方法は、クロームのデバッグ機能を使うか、ウェブのリダイレクトチェッカーで確認する。

特に問題なく表示されたが、300数記事を一件ずつ確認するので時間がかかった。

サイト内リンクの書換え(実施せず)

サイト内部の記事で、内部リンクを参照している場合、旧URLの形式になっているため、新URL形式に変更する。
一括変更については、プラグインのSearch Regexを使うのが一番楽で早い。

が、Search Regexで「Post content」の検索・置換をしようとした場合、カスタム投稿タイプには対応していないらしく、検索や置換は出来なかった。
(Search Regexでpostとpageしか対応していないため)

結局、内部リンクを変更しなくても、サイトにアクセスされた段階で301リダイレクトされて新URLにアクセスされるため、内部リンクはそのままにしてもそれほど問題ないと判断し、変更せずそのままとした。

その他の変更

  • 固定ページ等に書いていた、「ドメイン/entry/yyyy」で各年代毎のアーカイブを表示していたが、新URL形式はentryがないためリンク切れになっていた。固定ページを手動で変更して対応。
  • ウィジェットで使っている月別アーカイブは、パーマリンク構造の変化を自動で反映してドメイン/yyyy形式になっていたので対応不要。

GoogleサーチコンソールでURL検査・インデックス登録

新形式のパーマリンクで検索エンジンのページクロールを促進するため、GoogleサーチコンソールでURL検査を行う。
サーチコンソールは新しくなっており、以前のFetch as Googleはなくなっている。代わりにURL検査というツールになっている。

URL検査後、「URL は Google に登録されています」と表示される。「インデックス登録をリクエスト」を押す。

一件に数分かかるため、かなり時間がかかった。
また、52件目の登録から、「割り当て量の超過 プロパティの URL 検査の割り当て量を超えています。割り当て量は毎日更新されます。」と表示され、インデックス登録出来なくなった。
恐らく、一日の許容量が設定されており、50件前後を超えると登録出来なくなると思われる。

XMLサイトマップを通知

SNSカウントは0に

パーマリンク変更後は、SNSカウントは0になる。パーマリンクを変更する事で、ソーシャルのブックマークや「いいね」などのカウントがゼロになる。

英文字名のパーマリンクに変更(今回は変更せず)

これは、はてなブログで書いていた記事のパーマリンク形式が「123456」のような数字IDになっているため、英文字名のスラッグ(パーマリンク名)に変更したいということ。

(例)
パーマリンク変更前(はてなブログ標準URL形式)
https://example.com/entry/yyyy/mm/dd/数字ID

現状(数字ID形式)
https://example.com/数字ID/

変更したい(英文字postname)
https://example.com/postname/

が、一度に色々な変更をすると、後で問題が起きた時に切り分けが難しくなるため、今回はパーマリンク形式の変更と301リダイレクトだけすることにした。
(一応、2017年以降の投稿は英文字名で投稿していたので、直近のpostnameは全て英文字になっている。)

SPONSORED LINK

この記事をシェアする