WordPress | ドメイン移転やカテゴリスラッグやパーマリンク変更時に使う.htaccessリダイレクトまとめ

2023-09-23WordPress 新機能・ほか,WordPress

WordPress | ドメイン移転やカテゴリスラッグやパーマリンク変更時に使う.htaccessリダイレクトまとめ

WordPressのドメイン移転やカテゴリスラッグやパーマリンク変更時に使う.htaccessリダイレクト集になります。

リダイレクトが不要なケース

WordPressの機能によって自動でリダイレクトされるため、リダイレクト処理の実装が不要なケースは以下の通りです。

「記事idから投稿スラッグ名に変更する場合」

デフォルトの「基本」から「投稿名」またはカスタム構造で「/%postname%/」にした場合。

変更前:https://1-notes.com/?p=123
変更後:https://1-notes.com/entry-name/

この場合は.htaccessで設定しなくても変更前のURLにアクセスがあれば自動でリダイレクトされます。

「設定しないまま公開してしまった記事の投稿スラッグ名を変更する場合」

誤ってパーマリンクを設定しないまま記事を公開してしまった場合。

変更前:https://1-notes.com/post-123/
変更後:https://1-notes.com/entry-name/

この場合も変更前のURLにアクセスがあればWordPressは自動で投稿名でのパーマリンクでのURLにリダイレクトします。

焦らずに後ほど投稿名パーマリンクを設定すれば問題なく、後々にpost-xxxのページを発見してもそのまま変更しても大きな問題はありません。

「記事ページのURLからカテゴリスラッグを外す場合」

プラグインやPHPなどを使って公開中ブログの全記事ページのURLからカテゴリスラッグを外す場合。

変更前:https://1-notes.com/aaa/entry-name/
変更後:https://1-notes.com/entry-name/

この場合も変更前のURLにアクセスがあればWordPressは自動で投稿名でのパーマリンクでのURLにリダイレクトしますのでリダイレクト設定は不要になります。

個別記事の投稿スラッグ名を変更

「投稿名」またはカスタム構造で「/%postname%/」で設定していて、既に公開済みの投稿名パーマリンクを変更する場合。

変更前:https://1-notes.com/entry-name111/
変更後:https://1-notes.com/entry-name222/

この場合は変更前のURLから変更後のURLにリダイレクトを記述する必要があります。

RewriteEngine On
RewriteBase /
RewriteRule ^entry-name111/ /entry-name222/ [R=301,L]

カテゴリURLに「category」を付けている場合

カテゴリのスラッグを変更する場合のリダイレクトでカテゴリURLに「category」を付けている場合。

ーカテゴリページー
変更前:https://1-notes.com/category/aaa/
変更後:https://1-notes.com/category/bbb/

変更前のカテゴリページを変更後のスラッグのカテゴリページURLにリダイレクトさせます。

RewriteEngine On
RewriteBase /
RewriteRule ^category/aaa/$ category/bbb/ [R=301,L]

カテゴリURLに「category」を付けていない場合

ーカテゴリページー
変更前:https://1-notes.com/category/aaa/
変更後:https://1-notes.com/category/bbb/

RewriteEngine On
RewriteBase /
RewriteRule ^/aaa/$ /bbb/ [R=301,L]

記事ページは自動でリダイレクトされるパターンですので記事ページに対するリダイレクト設定は不要です。

記事URLは存在するパーマリンクの記事URLならデフォルトでリダイレクトされるので、カテゴリのスラッグの変更であれば、記事に対するリダイレクトの記述は不要です。

WordPressは記事URLは存在しないカテゴリスラッグ以下のアクセスであっても投稿名パーマリンクから自動的にリダイレクトされます。

例えば「https://1-notes.com/未分類/aaa/」の記事ページがあれば「https://1-notes.com/適当なスラッグ/aaa/」どんなスラッグでも「https://1-notes.com/未分類/aaa/」にリダイレクトします。

カテゴリページURLの「category」なしからありへ変更

カテゴリページのURLに「category」をプラグインなどを使って外してたのを再度付与する場合のリダイレクト記述。

ーカテゴリページー
変更前:https://1-notes.com/aaa/
変更後:https://1-notes.com/category/aaa/

記事ページ
変更前:https://1-notes.com/entry-name/
変更後:https://1-notes.com/entry-name/

RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_URI} !(^/category/)
RewriteRule ^(css|php|javascript)/$ /category/$1 [R=301,L]

カテゴリのスラッグ名と記事のパーマリンクを混合させない為、変更前のカテゴリスラッグ名を数だけ指定していきます。

記事URLにカテゴリのスラッグを含める場合も自動で付与されるので記事用の記述は必要ありません。

WordPressサイトのドメインを変更

ートップページー
変更前:https://1-notes.com/
変更後:https://2-notes.com/

ーその他のページー
変更前:https://1-notes.com/xxx/
変更後:https://2-notes.com/xxx/

以下の.htaccessを旧ドメインのトップディレクトリに設置する事でトップページ以下全てのディレクトリ、ファイルURLが新ドメインにリダイレクトします。

RewriteEngine On
RewriteRule ^(.*) https://2-notes.com/$1 [R=301,L]

Chromeで動作テストする場合は、Chromeの機能でアクセスしたリダイレクト結果をキャッシュしていて.htaccessの記述を変更・削除してもキャッシュによって変えられない・戻らない場合があります。
その場合は「chrome://settings/clearBrowserData」にアクセスしてキャッシュデータを削除する事で解除されます。