自分の運営しているサイトでパーマリンクの設定を変更する必要がありました。
パーマリンクというのは、自サイトのドメイン(例えばこのサイトでいうhttps://sagadylan.com/)の後の部分。
この設定を変えてしまうと、これまでのURLが変わってしまうので、他のサイトで紹介されていたり、TwitterやFacebookなどでシェアされた記事なども全て404ページ(「ページが見つかりません」のページ)に飛んでしまう、いわゆるリンク切れを起こしてしまいます。
ただしこれは、301リダイレクトという手法を取ることによって回避することができます。
今回は、Wordpressにおけるパーマリンク設定変更に伴う301リダイレクトの方法を、とても簡単に済ませられる方法をご紹介します。
今回の工程
今回のパーマリンクの変更に当たって必要だった作業は以下。
- Permalink Redirectのファイル書き換え
- WordPressダッシュボード>設定>パーマリンク設定の変更
- Permalink Redirectの設定の変更
- Search Regexによる内部リンク書き換え
使用したプラグインは
- Permalink Redirect
- Search Regex
の二つです。
Permalink Redirect WordPress Pluginのインストール
まずは、古いURLから新しいURLへ自動転送してくれる301リダイレクトを一括で行ってくれる、Permalink Redirect WordPressというプラグインを導入します。
301リダイレクトについて詳しく知りたい方は以下のリンクを参考にしてください。
参考301リダイレクトとは | 0~9 [SEO HACKS]
このPermalink Redirect WordPressですが、Wordpress上で検索すると同名の別プラグインが出てきてしまうので、必ず以下のリンクからファイルを直接入手しましょう。
参考Permalink Redirect WordPress Pluginのダウンロード(新しいウィンドウが開きます)
ZIPファイルとPHPのファイルがありますが、ぼくは今回はPHPファイルをダウンロードしました。
ファイル内書き換え
本来このプラグインは、一時的なリダイレクトに利用される302リダイレクト設定になっていますが、今回はパーマリンクを完全に変更してしまうので、永久的にリダイレクトするため301リダイレクトへ変更しなくてはいけません。
そのためにylsy_permalink_redirect.phpを、CotEditorなどのテキストファイルで開き、一部を書き換えます。
書き換える箇所はファイル406行目あたり。
[code]
if (!function_exists(‘wp_redirect’)) {
function wp_redirect($location, $status=302)[/code]
この最後の部分、302になっている箇所を301へと書き換えます。
[code]
if (!function_exists(‘wp_redirect’)) {
function wp_redirect($location, $status=301)[/code]
WordPressにインストール
無事に書き終えて保存したら、このphpファイルをFilezillaなどのFTPソフトを利用してアップロードしましょう。
[blogcard url=”https://sagadylan.com/filezilla-lolipop/”]
アップロードする箇所は、wp-content>pluginsのフォルダ。
アップロード後は、Wordpressのダッシュボード内で、 プラグイン>Permalink Redirect から有効化を忘れずに。
WordPress内のパーマリンク設定を修正
プラグインの準備は整ったので、ここからWordpress内からパーマリンクの設定を変更します。
パーマリンクの設定は、
WordPressダッシュボード>設定>パーマリンク設定の変更
より行います。
ここから、自分の好きなパーマリンク構造を選択します。
今回のぼくのケースだと、もともとは「/%category%/%postname%」だったものを、カテゴリーを消して「/%postname%」のみへと変更しました。
これを行った後は、次のステップが完了するまで、以前までのカテゴリーを含んだURLは無効化(リンク切れ)されますので、ご注意ください。
Permalink Redirectの設定
パーマリンクの変更は完了しましたが、これまでの古いURLたちは全てリンク切れになっています。
素早く対処するために、Permalink Redirectの設定に行きましょう。
ダッシュボード>設定>Permalink Redirect
に飛び、Old Permalink Structuresの項目に、変更前の設定を入力します。(ぼくの場合だと「/%category%/%postname%」)
以上でパーマリンクのリダイレクト設定は完了です。
変更前のリンク(FacebookやTwitter上)などから、一度自サイトへアクセスしてみて、正常に動作しているか確認してください。
動作がうまくいかない場合は、パーマリンクの設定がまちがっている可能性があります。
Serch Regexでブログカードなどの表示エラー対策
通常のパーマリンクの変更とリダイレクト設定は上記の方法で問題なく終わったのですが、Pz Blogcardなどを利用している方は、この方法を使ってしまうと、ブログ内で表記していたブログカードの表示がおかしくなります。
アクセス先はリダイレクトで自動変更になっているので問題ありませんが、URLそのものは書き換えられていないので、ブログカードのようなURLより情報を取得しているものだと、新しいリンク先の情報までは取得してくれません。
これを防ぐためには、ブログカードで利用されているURLを全て新しいURLに書き換えるという、恐ろしく面倒な作業をしなくてはいけないのですが、Serch Regexというプラグインを使うことで、この作業を劇的に簡略化することができます。
参考Search Regex — WordPress Plugins
ダッシュボードのプラグイン画面から検索して新規追加あるいは上記リンククリックでファイルダウンロード、FTPなどでインストールしてください。(有効化を忘れずに)
ツール>Seach Regexの設定画面へ。
このSearch Regexは、特定のエリア内にある指定した文字列を検索し、新しい文字列へと書き換えてくれるアプリ。
今回は、先の変更したパーマリンクの設定にのっとって、記事内の内部リンクのURLの変更した部分(カテゴリー表示)だけを削除します。
つまり
https://sagadylan.com/food/yakiniku
の赤色で示した部分のみを削除したいわけです。
まずは、左上のsource(検索対象)の部分をPost content(記事内)に設定。
Limit to と Order By はそれぞれ、最大検索数 と 表示順 についてなので触らなくてもOK。
Search Patternには書き換えたい元の文字列・・・今回の場合だとsagadylan.com/のスラッシュ以降から、記事固有のURL(スラッグ)の間を削除するので「food/」を記入します。
そして、下のReplace Patternには、新しい文字列・・・今回の場合だと書き換えではなく元の文字列を削除したいだけなので、空欄に。
これでまず Searchでブログの全記事内にどれくらい今回の条件にあてはまる文字列があるかを確認。
チェックして、置き換えても問題ないようであれば、Replace & Saveで処理完了です。
これで、foodカテゴリーの中にあった全ての記事のURLからはカテゴリーに値する部分が削除され、無事変更後のURLになります。
あとは、カテゴリーの数だけ同じ作業を繰り返すのみ。
カテゴリーが100や200でない限り、それほど時間はかからないはずですし、URLを一つずつ書き換えるよりはよっぽど楽です。
まとめ
今回は、Wordpressでパーマリンクを変更する方法と、その変更後に行うべき処理について書きました。
簡単におさらいしておきます。
- Permalink Redirectのファイル書き換え
- WordPressダッシュボード>設定>パーマリンク設定の変更
- Permalink Redirectの設定の変更
- Search Regexによる内部リンク書き換え
同じ状況で悩んでいる方もおられると思いますので、参考になれば幸いです。
そんな感じで。
[blogcard url=”https://sagadylan.com/blog-image-edit/”]
[blogcard url=”https://sagadylan.com/macbook-12inch-review/”]
[blogcard url=”https://sagadylan.com/blog-reference-book-article/”]