こんかいの作業は、旧サイトの一部のサブディレクトリを新ドメインに 301リダイレクト 設定させることです。
検索してもズバリ同じ状況が意外に出てこないので、初心者のわたしには少々アレンジ能力が必要でした。
サブディレクトリ(カスタム投稿タイプ)の301リダイレクトのやり方
301リダイレクトをかけるには、旧サイトの「.htaccess(ドットエイチティーアクセス)」にリライトルールを記載します。
「.htaccess(ドットエイチティーアクセス)」の基礎知識
WordPressの「.htaccess(ドットエイチティーアクセス)」はどこにある?
私の場合、ドメイン直下のとexsample.com/と、exsample.com/wp/の両方に置いてあった。
私の環境は exsample.com/wp/ にwordpress をインストールして、表示はexsample.com/ に設定しているので、その際の設定でコピーを作り移動させた気がするので、2つあったのだろうけど、この場合はどちらに記載するのか悩んでしますね。
ドメイン直下にある「.htaccess」に記載します
旧サイトの中のひとつのサブディレクトリ(カスタム投稿タイプなど)を新ドメインに転送します。
(1)http://exsample.com/custum-post/custum-post_tag の場合
custum-post 以下がすべて反映されるので、以下の一行だけでOK。
RewriteRule ^custum-post/(.*)$ http://exsample.com/ [R=301,L]
実際書くときはこんな感じ。
# Rewrite <IfModule mod_rewrite.c> RewriteEngine on RewriteRule ^custum-post(.*)$ http://exsample.com/ [R=301,L] </IfModule>
(2)http://exsample.com/custum-post_tag の場合
カスタムタクソノミーが以下(2)の場合はあと二行の記載が必要です。
# Rewrite <IfModule mod_rewrite.c> RewriteEngine on RewriteRule ^custum-post(.*)$ http://exsample.com/ [R=301,L] RewriteRule ^custum-post_tag/(.*)$ http://exsample.com/ [R=301,L] RewriteRule ^custum-post_cat/(.*)$ http://exsample.com/ [R=301,L] </IfModule>
どこに記述すればいいのか?
記載する内容はわかった。でもどこに書いていいかわからない。
現状の「.htaccess」はこのようになっていますが、はて?どこに追記したらいいのだろうか?
# BEGIN WordPress <IfModule mod_rewrite.c> RewriteEngine On RewriteBase / RewriteRule ^index\.php$ - [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index.php [L] </IfModule> # END WordPress SiteGuard_User_ExcludeSig abc1234567 SiteGuard_User_ExcludeSig abc1234567
下の二行はサーバーへの書き込みエラーが起きた時に「一番下に書け」というレンタルサーバーの指示に従って自分で書き込んだもの。
調べたところ「RewriteEngine on」は何度も繰り返し書く必要はないので1つのファイルに一度書けばいいそうですが、「# BEGIN WordPress~# END WordPress」は、もともとのWordPressに書いてあるものがあるので、その上側に書くらしいです。
ってことで一番上に追記しました。
完成
はい完成!挙動も問題ありませんでした!また忘れそうだから残しておこう。
# Rewrite <IfModule mod_rewrite.c> RewriteEngine on RewriteRule ^custum-post(.*)$ http://exsample.com/ [R=301,L] RewriteRule ^custum-post_tag/(.*)$ http://exsample.com/ [R=301,L] RewriteRule ^custum-post_cat/(.*)$ http://exsample.com/ [R=301,L] </IfModule> # BEGIN WordPress <IfModule mod_rewrite.c> RewriteEngine On RewriteBase / RewriteRule ^index\.php$ - [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index.php [L] </IfModule> # END WordPress SiteGuard_User_ExcludeSig abc1234567 SiteGuard_User_ExcludeSig abc1234567