WordPress で運営しているブログ・サイトの「301 リダイレクト」設定方法を、以下のケース別にまとめています。
当サイトで開発・提供している無料ツールもご利用ください。
移行そのものに関しては以下の記事で詳細に解説しています。
WordPress で運営しているブログ・サイトの「301 リダイレクト」設定方法を、以下のケース別にまとめています。
当サイトで開発・提供している無料ツールもご利用ください。
移行そのものに関しては以下の記事で詳細に解説しています。
すべてのリダイレクトは .htaccess の編集で対応できます。
同じサイト(ドメイン)内でパーマリンクを変えるとき、最も簡単なコードは以下のとおりです。
Redirect 301 /before/ /after/上記のコードでは、パラメーター付きの URL は転送されません(広告や一部 SNS からのアクセスには、パラメーターが付きます)。
パラメーター付きの URL も転送したい場合は、以下のコードになります(QSA を指定)。
RewriteEngine On
RewriteCond %{REQUEST_URI} ^/before/
RewriteRule ^before/(.*)$ /after/$1 [R=301,L,QSA]一部のページを別のサイト(サブディレクトリやサブドメインを含む)に移動するとき、最も簡単なコードは以下のとおりです。
# 別ドメインに移動
Redirect 301 /before/ https://example.jp/before/# サブドメインに移動
Redirect 301 /before/ https://blog.example.com/before/# サブディレクトリに移動
Redirect 301 /before/ https://example.com/blog/before/パラメーター付きの URL も転送したい場合は、以下のコードになります。
# 別ドメインに移動
RewriteEngine On
RewriteCond %{REQUEST_URI} ^/before/
RewriteRule ^before/(.*)$ https://example.jp/before/$1 [R=301,L,QSA]# サブドメインに移動
RewriteEngine On
RewriteCond %{REQUEST_URI} ^/before/
RewriteRule ^before/(.*)$ https://blog.example.com/before/$1 [R=301,L,QSA]# サブディレクトリに移動
RewriteEngine On
RewriteCond %{REQUEST_URI} ^/before/
RewriteRule ^before/(.*)$ https://example.com/blog/before/$1 [R=301,L,QSA]WordPress のパーマリンク設定(共通設定)を変更するさい、環境によってコードが異なります。
もともとが「基本」だった場合、リダイレクト設定は必要ありません。WordPress が自動的に変更後のパーマリンク構造にリダイレクトしてくれるためです。
ここでは、その他の構造から「投稿名」に変更するパターンのみご紹介します。
.htaccess はそれぞれ以下のとおり。
# 日付と投稿名から投稿名
RedirectMatch 301 ^/([0-9]{4})/([0-9]{2})/([0-9]{2})/(?!page/)(.+)$ https://example.com/$4# 月と投稿名から投稿名
RedirectMatch 301 ^/([0-9]{4})/([0-9]{2})/(?!page/)(.+)$ https://example.com/$3# 数字ベースから投稿名
RedirectMatch 301 ^/archives/(\d+)$ https://example.com/?p=$1# 数字のみから投稿名
RedirectMatch 301 ^/(\d+)$ https://example.com/?p=$1%post_id% から変更するとき、いったん「基本」にリダイレクトし、そこからさらに「投稿名」にリダイレクトする形になります。
Create Redirects | Yoast SEO を使うと簡単です。
サイトのドメインを変更するとき(ドメインを載せ替えるとき)のコードは、以下のとおり。
RewriteEngine On
RewriteCond %{HTTP_HOST} ^example\.com$
RewriteRule ^(.*)$ https://example.jp/$1 [R=301,L]上記コードが書かれた .htaccess を残しておけば、リダイレクト元の WordPress を削除しても問題ありません。
サーバーの仕様にもよりますが、WordPress のドメイン載せ替えは「別の WordPress に変更」という形になります。
同じドメイン内でサイトを丸ごと移動する場合、サブディレクトリのみやや扱いが難しくなります。
# ルートからサブドメインに移動
RewriteEngine On
RewriteCond %{HTTP_HOST} ^example\.com$
RewriteRule ^(.*)$ https://blog.example.com/$1 [R=301,L]# ルートからサブディレクトリに移動
RewriteEngine On
RewriteCond %{HTTP_HOST} ^example\.com$
RewriteCond %{REQUEST_URI} !^/blog/
RewriteRule ^(.*)$ https://example.com/blog/$1 [R=301,L]# サブドメインからルートに移動
RewriteEngine On
RewriteCond %{HTTP_HOST} ^blog\.example\.com$
RewriteRule ^(.*)$ https://example.com/$1 [R=301,L]# サブドメインからサブディレクトリに移動
RewriteEngine On
RewriteCond %{HTTP_HOST} ^blog\.example\.com$ [NC]
RewriteRule ^(.*)$ https://example.com/blog/$1 [R=301,L]# サブディレクトリからルートに移動
RewriteEngine On
RewriteCond %{HTTP_HOST} ^example\.com$
RewriteRule ^blog/(.*) https://example.com/$1 [R=301,L]# サブディレクトリからサブドメインに移動
RewriteEngine On
RewriteCond %{HTTP_HOST} ^example\.com$ [NC]
RewriteRule ^blog/(.*)$ https://blog.example.com/$1 [R=301,L]RewriteRule のリダイレクト先ドメインを変更して、「ルートから別ドメインのサブドメインへリダイレクト」という形にも対応できます。
以下のリダイレクトに関しては、.htaccess の編集ではなく、プラグイン「Redirection」を使うほうが簡単です。
サイト内でリダイレクトするときは、ドメインを省略してかまいません(ドメインを含んだ URL をそのままコピペしても OK。プラグインが自動的に調整してくれます)。
オプションでチェックが入っている「大文字小文字の区別なし」「スラッシュ無視」は、そのままの状態で大丈夫です。
/before//after/
他のサイトにリダイレクトさせるときは、「ターゲット URL」にドメインを含めた URL をコピペするだけです。
/before/https://example.jp/before/
Redirection は正規表現を扱えるので、パーマリンク設定変更やサイト全体の移行も処理できます。
しかし、以下の場合は設定したリダイレクトが無効になってしまいます。
「全体的にリダイレクトするなら .htaccess」「少数ページをリダイレクトするなら Redirection」という使い分けがおすすめです。
WordPress の 301 リダイレクトに関し、よくいただくご質問を以下に掲載しています。
.htaccess の編集に失敗すると、500 エラーなどでサイトが表示されなくなるおそれがあります。
WordPress で 500 Internal Server Error になる原因と解決策
ページ単位でリダイレクトするなら、プラグイン「Redirection」がおすすめ。
WordPress 初心者であれば、ドメインの載せ替えやサブドメイン / サブディレクトリ間の移行など、全体的に変更するときのみ .htaccess で設定するとよいですね。
無料で使える .htaccess リダイレクトツール もぜひご利用ください。
エラーが出て手に負えなくなった、ドメイン変更を代行してほしい、という場合はお気軽にご相談ください。