特定のサブディレクトリ(カスタム投稿タイプ)のみ新ドメインに301リダイレクトするには

こんかいの作業は、旧サイトの一部のサブディレクトリを新ドメインに 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

シェアする

フォローする