こんにちは。たきもとです。
ワードプレスでブログやサイトを運営しているとパーマリンクの設定を変えたくなることがあります。
たとえば、カテゴリを編集したい時とか。
SEOを気にしたりとか。
今回は私がパーマリンクを変更するに至った過程やその方法を紹介します。
動作環境
windows8.1 64bit
WordPress 4.4.2
simplicity 1.9.3
エックスサーバ X10
MySQL 5.5
Chrome
FileZilla
なぜパーマリンクを変更したかったのか
パーマリンクを変更したかった理由
理由は2つあります。
一つは、WP運営上の問題。
もう一つは、SEO的な問題。
まず前者について。
この たきもとけんご.com は長く運営してゆく予定です。
各記事は category/記事名(または date/記事名) の様なURLなので、パーマリンクを変更した時にブログ内リンクが切れてしまいます。
現時点ではカテゴリの分類が適当です。
だから、今後カテゴリを整理するときに困るかなと思いまして。
そろそろ記事数が100個に差し掛かろうとしているので、もう少し管理をしっかりしようかと。
次に後者について。
SEO、SEOって躍起になるのはあまり好きじゃないのですが。
検索エンジンではURLに含まれる文字列も検索対象になるようです。
だから、URLに含まれるパーマリンクも気にしていこうと思いまして。
以上がパーマリンク変更を決意した理由です。
私が失敗した方法
先に私が301リダイレクトを仕掛けるのに失敗したor上手くいかなかった方法を紹介します。
似たような状況でハマった方のために。
WEBサービスでブログ内全記事URL取得を試みたが、イマイチだったモノ
これらのサービスでは一部の記事しか抽出できませんでした。
だから、WPの組み込み関数を利用して全記事の抽出を行いました。
手順は後述します。
WPプラグインで301リダイレクト実現を試みたが、イマイチだったモノ
プラグインでどうにかしようと頑張りましたが、結局ダメでした。
結局、301リダイレクトは .htaccessファイル を編集することで実現しました。
参考サイト
ここでは、私が主に参考にしたサイト様・ブログ様を紹介します。
301リダイレクトの原理等について詳しく紹介して下さっています。
- 【wordpressサイト限定】リダイレクトのための.htaccessへの記述を表計算ソフトとget_postsで効率化 | Web Shufu
- 301リダイレクトについて、必要性と設定手順をまとめてみた | バイラルクラブ
用語・事前知識
ここで、用語と予備知識を必要最小限に絞ってざっくりまとめておきます。
- パーマリンク
- 301リダイレクト
- ルート・ディレクトリ
- .htaccess
パーマリンク
URLの一部になる文字列のこと。
WP記事投稿時に上図の場所で設定可能。
301リダイレクト
リダイレクト (HTTP)
ウェブサイトにおけるリダイレクト(英:redirect)とは、ウェブサイトの閲覧において、指定したウェブページから自動的に他のウェブページに転送されること。URLリダイレクト(URL redirection)とも言われる。
通常はウェブページのURLが変わったときに、元のURLから新しいURLへ誘導するときに用いられる。
実用的には太線部分が目的になります。
今回のパーマリンク設定・301リダイレクトの目的も、旧URLから新URLへ自動的に飛ばすことです。
さて、じゃあ 301, 404 等の数字ってなに? に対する回答ですが。
HTTPステータスコードと呼ばれる通信の状態を表す数字のことです。
301 Moved Permanently
恒久的に移動した。リクエストしたリソースが恒久的に移動されているときに返される。
引用: HTTPステータスコード | wikipedia
旧URLから新URLに自動的に飛ばす設定を恒久的にしましょう、というのが301。
今回はこれを利用します。
ルート・ディレクトリ
WPを構成するファイルで index.html があると思います。
これが存在するディレクトリを ルート・ディレクトリ と呼びます。
.htaccess
.htaccess
.htaccess(ドットエイチティーアクセス)とは、Apacheを用いたWebサーバにおいて、ディレクトリ単位で設置及び設定を行える設定ファイルである。
引用: .htaccess | wikipedia
wikipediaを見ると色々書いてありますが、
-自分がサーバの管理者で、
-そのサーバがApacheなら
-通信周りの設定ができますよ
という理解でOKだと思います。
今回はWPルートディレクトリにある.htaccessファイルを編集することで301リダイレクトを実現します。
パーマリンクの変更方法
方針
.htaccessファイルを編集することで301リダイレクトを実現します。
.htaccessファイルを編集する手間を削減するためにexcelを利用しますが、もしリダイレクトしたい記事数が少なければ手作業で編集してもokです。
最終的なファイル記述は次のようになります。
Redirect permanent /2016/03/04/post-436/ https://kengotakimoto.com/post-436/
Redirect permanent (変更したいURLのホスト以下の文字列) (変更後のURL)
ところどころに 半角スペース があるのがポイントです。
今回は301リダイレクトを行う記事数が多いのでexcelの力を借ります。
1. WP設定画面で変更前後のパーマリンクを確認
まず、変更前後のパーマリンク設定を確認しましょう。
WP管理画面(ダッシュボード)から、
設定/パーマリンク設定
私は
日付と投稿名 → 投稿名
のように変更しました。
ここではまだパーマリンク設定を変えず、なにからなにへ変更させるのかを確認しましょう。
メモ帳 or excel に記録しておくと良いです。
2. single.php 編集後,記事URL一覧を取得
投稿/新規追加
でテキトーな記事をプレビューします。
このとき、postIdが必要になるのでメモっておきましょう。
post ID は上図の黄色い部分です。
次に,single.phpの編集です。
私は simplicity というテーマを使っていますので、これを例に紹介します。
ダッシュボード/外観/テーマの編集 へ移動し、 single.php ファイルを選択します。
simplicityの子テーマにはこのファイルがないので、親テーマ内を探して編集します。
single.php最下部に次のような記述をして保存します。
<?php if(is_single('○○')){?> <ul> <?php global $post; $args = array( 'numberposts' =>10000); $myposts = get_posts( $args ); foreach( $myposts as $post ) : setup_postdata($post); ?> <li><?php the_permalink(); ?></li> <?php endforeach; ?> </ul> <?php } ?>
○○には、先程メモったpost IDを記入しましょう。
この記述は,ブログ内URL一覧をリスト形式で取得するものです。
ここで、先ほど作成した記事で再度プレビューを行います。
simplicityではsingle.php最下部がfooterでした。
なので、footerの下にリストが表示されることになります。
このリストは後で必要なので メモ帳 or excel に記録しておきましょう。
この段階ではパーマリンク変更前のリストが表示されているはずです。
変更後のリストも必要なので、
“1. WP設定画面で変更前後のパーマリンクを確認”
の手順と同様に希望するパーマリンク設定に変更し、再度プレビューを行いましょう。
ここで表示されたリストも後で使うので、メモ帳 or excel に記録します。
表示例は次の通りです。
3. コピペするためにexcelを活用
先述した “方針” のデータを作成するためにexcelを利用します。
各列には次のようなデータを入力します。
- A列: Redirect permanent
- B, D列: 半角スペース
- C列: 変更前URLから http://kengotakimoto.com を除いたモノ
- E列: 変更後のURL
- F列: A~Fを & で繋いだ式を入力
A列には次の文字列をそのまま入力します。
Redirect permanent
B,D列は半角スペースを入力します。
これは先述した”方針”の通りに .htaccessファイル へ記述するためです。
C列には http ~ ドメイン を除いた文字列を残します。
excelならこれらの文字列を一括置換できます。
Ctrl + h で。
E列にはパーマリンク変更後のURLを入力します。
これは先程パーマリンクを設定後、プレビューによって表示されたリストのコピペでokです。
F列には次の関数を入力し、A列~E列を結合します。
=A○&B○&C○&D○&E○ /* 例 */ 3行目の文字列を連結したい時 F列に次のように入力する =A3&B3&C3&D3&E3
.htaccessで最終的に使用するのは F列 です。
記入例は次の通りです。
4. .htaccess編集
あとはexcelで作成したデータ(F列)をコピペしたら完了です。
ペーストは次のコードの直前に行います。
</IfModule> //ここの直前にペーストする
.htaccess(編集前。一部抜粋)
# BEGIN WordPress <IfModule mod_rewrite.c> RewriteEngine On * * * * </IfModule> # END WordPress
.htaccessの編集は メモ帳 or テキストエディタ(Atom, サクラエディタ など) 等で編集します。
私はAtomを利用しましたが、エックスサーバ利用者はエディタやFTPソフトを使わなくても.htaccessの編集が可能です。
エックスサーバへログインしてファイルマネージャから編集しましょう。
エックスサーバー
編集後、FTPソフトでサーバへアップロードするのをお忘れなく。
5. 動作確認
301リダイレクトが成功しているかどうかを次のWEBサービスを利用して確認します。
サイトにアクセスすると上図のような画面になります。
指定された箇所にリダイレクトの変更前のURLを入力しましょう。
リダイレクトが成功すれば次のような画面が表示されます。
6. single.phpへの追記箇所 と 作成した一時記事 を削除
URL一覧を取得するために編集した次のファイルはもう不要です。
削除しましょう。
- simgle.php 追記部分
- 一時的に作成した記事
まとめ
私はWPを長く運営してゆくつもりです。
だから,URLを記事のカテゴリ変化に強いものしたくて今回の作業を行いました。
.htaccessファイルの編集は若干ハードルが高いのです。
でも、PCのレジストリ設定と同様で、一度やってしまえば慣れてしまうものです。
私は今後WPテーマを自作する予定です。
今回の作業はWPの裏で走っているファイルについて知る良い機会でした。
まだまだ分からないことは多いのですが、徐々に裏のシステムについて詳しくなりたいと思っています。
参考サイト
大変お世話になりました。
- 【wordpressサイト限定】リダイレクトのための.htaccessへの記述を表計算ソフトとget_postsで効率化 | Web Shufu
- 301リダイレクトについて、必要性と設定手順をまとめてみた | バイラルクラブ
通信系の知識が足りないな、と思って手に取ったのが次の本です。
通信やフレームワークの基礎について解りやすく記述されているのでおすすめです。
今回紹介したHTTPステータスコードについての解説もあります。
私は1度読んだだけでは理解しきれない箇所がありました。
なので、私のように独学で知識を吸収したい人は繰り返し読むようにしましょう。
[amazonjs asin=”4774142352″ locale=”JP” title=”「プロになるためのWeb技術入門」 ――なぜ、あなたはWebシステムを開発できないのか”]
今回は以上です。