【WordPress】URL(パーマリンク)から日付を削除!.htaccessに301リダイレクト設定と内部リンクを(最新)Search Regex 2.x系の正規表現で置換する方法

この記事は約10分で読めます。

フィリピン旅ブログからWordpressで設定した年月日付きURLから年月日を削除する方法のご紹介です。

記事のURL(パーマリンク)から日付を削除した理由

Search Regex 2.0 (年月日のURLをシンプルにする)

随分前にURL(パーマリンク)は短い方がグーグルの評価が高い。とのブログ記事を読みました。

その後に立ち上げた他のサイトは、https://(ドメイン名)/(記事名) と、スッキリさせて運営しています。

スポンサーリンク

ただ、このブログの立ち上げは2009年です。FC2ブログが前身ですが当時やっぱり目にした記事は、最後に”.html”の方がグーグルに評価が高い。でした。

信ぴょう性は、???(笑)ですが、パーマリンク設定で末尾に”.html”を付けるだけだし「ついでに付けとこ!」って軽いノリで付与してました。

で、例えば、2020年6月現在「アンヘレス」の単独ワードで検索すると上位表示されている以下の投稿は、

https://kix2philippines.com/20190209/angeles-rule2019.html

https://(ドメイン名)/(投稿年月日:yyyymmdd)/(投稿名).html

となっています。※スマホの場合は黒いテキストは横にスクロールします。これを、・・・

https://kix2philippines.com/angeles-rule2019

https://(ドメイン名)/(投稿名)

とするのが今回の投稿の趣旨となっています。

具体的には、URl途中の”/yyyymmdd”と最後の”.html”を削除したパーマリンクにする事です。

本ブログの設定はレアケースと思うので一般的な日付のパーマリンクのサンプルを先に記載しておきます。
1. URLに…/年/月/… として設定した場合
.htaccess :
RewriteRule ^([0-9]+)/([0-9]+)/(.*)$ /$3 [R=301,NC,L]
Search Regex 2.x:
https://hogehoge.hoge/([0-9]+)/([0-9]+)/(.*)
https://hogehoge.hoge/$3

2. URLに…/年/月/日/… として設定した場合
.htaccess :
RewriteRule ^([0-9]+)/([0-9]+)/([0-9]+)/(.*)$ /$4 [R=301,NC,L]
Search Regex 2.x:
https://hogehoge.hoge/([0-9]+)/([0-9]+)/([0-9]+)/(.*)
https://hogehoge.hoge/$4

必要な作業は、既に各所のブログで紹介されていますが、投稿年月日(…/yyyymmdd/…)としたサンプルや、末尾に”.html”を付与したサンプルが無かったので正規表現の設定を含め紹介したいと思います。

また、殆どのサイトは「Search Regex」の旧版での設定説明として書かれていたので、操作メニューが異なる新版の「Search Regex 2.x系」で書き残しておきます。

※Search Regex 2.x系は、リリース直後なのでまだネット上に出回っていません。

◆主な設定&作業は3点です。

  1. .htaccessに301リダイレクトの設定をすること
  2. ワードプレスの管理画面の設定/パーマリンク設定で、”カスタム構造”から”投稿名”にすること
  3. ワードプレスのプラグインを新規インストールして「Search Regex 2.x」で内部リンクを置換すること

.htaccessに301リダイレクトの設定も、Search Regex 2.x系の設定も、正規表現で置換する必要がります。

スポンサーリンク

パーマリンクの日付と余計な文字を除去(/削除)するには以下の正規表現の知識があれば良いでしょう。

正規表現で日付付きURLを文字列置換する

正規表現を0から説明すると1冊本が書けるほどになるので、今回利用した正規表現のみを抜粋しています。

文字 説明
^ 直前の文字が行の先頭にある場合にマッチします
. 任意の1文字とマッチします
* 直前の0回以上の繰返とマッチ(最長一致)します
\ 正規表現をエスケープします※ここでは、”.”をエスケープしています
() ()内を1つのグループとして扱います
範囲を指定します
{n} 直前の文字の桁数(n)を指定します
$ 直前の文字が行の 末尾の場合にマッチします

.htaccess のリライトルール(301)設定

当サイトのレンタルサーバーはロリポップなので、管理画面にログインして「ロリポップ!FTP」で編集しました。

Xserverなら管理画面内で「.htaccess編集」から直接ファイルが弄れますね。

.htaccessに追加した行です。

#301 Redirect Date Delete
RewriteEngine On
RewriteRule ^([0-9]{8})/(.*).html$ /$2 [R=301,NC,L]
フラグ 意味 内容
R Redirect “=”に続く番号でリダイレクトする。以降のルールは無視される
L Last マッチ後はリリライトを中止する
NC No Case 大文字/小文字を区別しない ※無くても良いかな
ワードプレスのインストールで吐き出される `#BEGIN WordPress` から `#END WordPress`までは書かない方が良いみたいなので、`#BEGIN WordPress`と書かれた上行に追記しました。

数百円/月額のレンタルサーバでも”.htaccess”のファイルを弄れないことは無いハズなので、レンタルサーバの説明に従って追記してください。

直接旧URLをブラウザで叩いても良いですが、リダイレクトをチェックできるサイトで確認する方法もあります。

301リダイレクトはグーグルなどにインデックスされた旧URLから新URLにする設定ですね。旧URLの評価も新URLに引き継げる設定になります。ちなみに、301リダイレクトは、恒久的に転送するという意味になります。

これで、外部からリンクされたURLをリダイレクトする設定は終了です。

次は、内部リンクの書き換えです。が、その前に・・・。

内部リンクの書き換え前に絶対するDBバックアップ

データベースのバックアップは必須です。バックアップを確実に保存してから操作しましょう。今回は、phpMyAdmin でテーブルを全て”まるっと”エクスポートしました。

とは、言っても最近のレンタルサーバはバックアップも無料で数世代とってくれているようなので、そんなサーバなら1世代戻すだけですね。いやぁ~便利になりましたよ。

内部リンクの書き換え前に絶対すべきは、先ずはどの様に置換されるか確認することですね。

【Serch Regex 2.x】記事ページ内に直書きした内部リンクを置換する

置換に正規表現が使える「Search Regex」のプラグインがURLから日付を削除する紹介として、全てのサイトで紹介されていました。しかし、このプラグインは最終更新が古く最近のワードプレスのバージョンではエラーを吐いていたみたいです。

ですが、突然、プラグイン製作者がコードを0から書き起こして、Search Regex 2.0を数年ぶりにリリースしています。(2020/05~)

少しのBUGを含んでいたみたいで、本投稿日では、2020/06/06 の 2.1 が最新版となっています。

プラグインの追加や有効化については省略します。有効化するとダッシュボードメニューのツールに「Serch Regex」が表示されます。バージョン2.0系は日本語にも(ほぼ)対応しています。

スポンサーリンク

以下がインストール直後の、Serch Regex 2.x 系の操作画面になります。全3画面(検索と置換/設定/サポート)のみです。タブ方式の様になっていますが先頭の「検索と置換」以外は弄りません。

Search Regex 2.0 (初期画面)

日本語なので見ての通りです。説明は不要かな?笑)

項目 内容
検索 検索フレーズ(検索文字列)の設定します。フラグを検索は、「正規表現」と「大文字と小文字を区別しない」の2つが選択できます。
置換 グローバル置換テキスト(置換後の設定)の設定します。シングル、複数、削除が選択できます。(後述)
ソース ドロップダウンから色々設定できますが先ずは初期値のまま「投稿」「固定ページ」で良いと思います。コメント欄を有効にしている場合などでURLを提示して回答している場合は、「コメント」もチェックしましょう。ソース設定は「GUID検索」が選べますが普通は必要ないと思います。
結果 検索or置換結果のページ単位数の設定です。25件/ページ、50件、100件、250件、500件まで選べます。
「検索」 検索するのみです
「全て置換する」 ソースで選択したデータベースの内容を全て置換します

初期設定から弄る箇所は「フラグを検索」にある「正規表現」にチェックを入れることだけです。

Search Regex 2.0 (正規表現にチェック)

置換(グローバル置換テキスト)の設定状態で表示が異なる

置換(グローバル置換テキストを入力してください)の箇所の設定状態によって、2通りのチェックができます。

置換(グローバル置換テキスト)未設定[空欄]の場合

置換候補テキストがハイライト表示されます。
Search Regex 2.0 (未設定)

置換(グローバル置換テキスト)設定済の場合

置換後のテキストがハイライト表示されます。
Search Regex 2.0 (設定済)

以前のバージョンでは、置換前と置換後で差異が表示されていた様ですが、新バージョンでは置換候補表示と置換後だけになったみたいです。置換のテキストボックスが未入力なら置換候補表示、設定済みなら置換後の表示となります。

1記事/ページに3つ以上の置換が存在する場合は、「show n more」や「%s をもっと見る」などのボタンが表示されるので、クリックして全てを確認しましょう。但し、最大は20候補までしか表示されません。

※今回の様な年月日&固定文字列の置換が目的なら「大文字と小文字を区別しない」のチェックは外しても良いでしょう。

入力設定は、”.htaccess”に追記したした正規表現とほぼ同じです。

が、旧版の、Serch Regex の設定で紹介されている検索文字列の前後に、”|”は必要ありません。←ここ重要です

任意の1文字とマッチさせる”.”(ピリオド)前にエスケープ文字を入れた方が良いと思いますが無くても結果は同じでした。

今回、検索(検索フレーズ)に設定した文字列は以下になります。”{8}”は”+”でも良いです。

https://kix2philippines.com/([0-9]{8})/(.*).html

置換(グローバル置換テキスト)に設定した文字列は以下になります。

https://kix2philippines.com/$2

「全て置換する」を押下すると以下の画面になります。テストサイトなので1件だけです。

Search Regex 2.0 (検索の結果)

Serch Regex 2.x系の3つの置換方法

置換方法は3種あります。

置換:シングル

シングル行で置換する場合です。※今回の利用設定。
Search Regex 2.0 (シングル)

置換:複数

複数行に置換する場合です。
Search Regex 2.0 (複数)
※シングルに対してなので「マルチ」の訳が良い気もしますが…笑)

置換:削除

グローバル置換テキスト(置換後の設定)が入力不可になります。検索文字を削除する場合ですね。
Search Regex 2.0 (削除)

Search Regex 2.x で検索チェックした結果

全部が一発で気持ちよく置換できなかった。泣;)

HTML改行タグ<br />を使い改行指示している箇所や文中に複数のリンクがある場合は、全てが1行と見なされます。よって、事前に<br />タグを改行(リターン)にしたり、無理に改行を加えたりして投稿を修正し実行しました。

※正規表現を工夫すれば1発でイケますか?そこまでスキルが無いし…

※余談ですが、パーマリンクが変更になるので文中のAdsenseは一旦全て数分間消えてしまいます。

まとめ

WordPressで散見されるパーマリンクとは少し違った日付つきのURLの修正方法をご紹介しました。また、最近リニューアルされたばかりの最新の「Search Regex 2.x系」の設定方法についても説明しました。

どこかの誰かの参考になれば幸いです。

コメント

タイトルとURLをコピーしました