🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

リダイレクト

プログラムの入力元や出力先を通常とは別の場所に転送させることをリダイレクトと呼びます。

.htaccess

Apacheウェブサーバーにおいて、ディレクトリ単位で設置及び設定を行う設定ファイルを指します。

Q&A

解決済

1回答

871閲覧

サイトを丸ごとリダイレクトした後に、再度リダイレクトするためのhtaccessの記述方法を教えてください

ryo999

総合スコア11

WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

リダイレクト

プログラムの入力元や出力先を通常とは別の場所に転送させることをリダイレクトと呼びます。

.htaccess

Apacheウェブサーバーにおいて、ディレクトリ単位で設置及び設定を行う設定ファイルを指します。

0グッド

0クリップ

投稿2019/10/17 06:26

質問

2サイト(どちらもwordpressサイト)を一つにまとめようとしています。具体的には、サイトAの1カテゴリーとしてサイトBの記事を移動した上で、サイトBの評価を失わないよう、サイトBからサイトAにリダイレクトを試みました。

シロウトながら四苦八苦した結果、.htaccessの一番上に下記を追記したところ、なんとかうまくいきました。

ところが、その後、サイトA上のサイトB直下のURLを変更し、再度リダイレクトしようとしたところ、リダイレクトされず、404エラー(not found)が表示されてしまいます。例えば、

https://site-a/site-b/oldを、https://site-a/site-b/newにリダイレクト設定しても、https://site-a/site-b/oldのままで、404エラーが表示されてしまいます。

おそらく、下記の.htaccessの記載がおかしいためと思うのですが、どのように記述したら、
(1)サイトBを丸ごとサイトAにリダイレクトでき、かつ、(2)サイトAに引っ越し後のURLを変更することができるのでしょうか?

なお、サイトBの記事一つ一つをリダイレクトし直すのは、膨大な記事数(1千以上)のため避けたいです。

教えていただければ幸いです。

よろしくお願いいたします。

該当のソースコードサイトB

<IfModule mod_rewrite.c> RewriteEngine On RewriteCond %{HTTP_HOST} ^(www.site-b.com)(:80)? [NC] RewriteRule ^(.*) https://site-a/site-b/$1 [R=301,L] </IfModule>

試したこと

リダイレクトのプラグイン「Redirection」や「Quick Page/Post Redirect Plugin」でサイトAはもちろん、元のサイトBでもリダイレクト設定しましたがリダイレクトされませんでした。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

otn

2019/10/17 13:44

> (2)サイトAに引っ越し後のURLを変更することができるのでしょうか? 具体的にどういうことでしょうか?
ryo999
kyoya0819

2019/10/17 23:38

> サイトを丸ごとリダイレクトした後に、再度リダイレクトするためのhtaccessの記述方法を教えてください ではなく サイトの記事を移動した後に、リダイレクトするためのhtaccessの記述方法を教えてください が正しいのでは? リダイレクトからのリダイレクトをしては無限ループです。
guest

回答1

0

ベストアンサー

ワードプレスのプラグインについては知りませんが、(サイトA のドキュメントルート)/site-b/.htaccess に RewriteRule を設定するといいのではないでしょうか?

RewriteEngine On RewriteBase /site-b/ RewriteRule ^old/(.*) new/$1 [R=301,L]

(2019/10/21 08:59) 追記

「(サイトA のドキュメントルート)/site-b/」が存在しないとのこと。
では、トップの .htaccess の最初でリダイレクトするとどうでしょうか?
.htaccess の他の部分がわからないので、悪影響があるかもしれません。

<IfModule mod_rewrite.c> RewriteEngine On RewriteRule ^site-b/old/(.*) site-b/new/$1 [R=301,L] RewriteCond %{HTTP_HOST} ^(www.site-b.com)(:80)? [NC] RewriteRule ^(.*) https://site-a/site-b/$1 [R=301,L] </IfModule>

投稿2019/10/20 08:19

編集2019/10/20 23:59
TaichiYanagiya

総合スコア12173

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ryo999

2019/10/20 13:25

TaichiYanagiya様、ご回答いただきましてありがとうございます。大変お恥ずかしい話ですが、知識がなさ過ぎてやり方が分かりません・・。「(サイトA のドキュメントルート)/site-b/.htaccess に RewriteRule を設定する」とは、ルート直下に「site-b」というディレクトリを新たに作って、そこに上記ルールを記載したhtaccessファイルをアップロードするという意味でしょうか?
TaichiYanagiya

2019/10/20 15:53

「site-b」というディレクトリは既に存在するのでは?
CHERRY

2019/10/20 20:38 編集

(横からですが) site-b は、WordPress のカテゴリーということなので、ディレクトリは、存在しない可能性が高いと思います。
ryo999

2019/10/20 23:51

CHERRY様、おっしゃる通りで、site-bが存在しません。さらに、サイトAが実はサブドメインなので、メインドメイン直下のpublic_html内にサイトAディレクトリが作られており、余計にややこしいのです・・。
TaichiYanagiya

2019/10/20 23:58

あ、ディレクトリがあるのではなく、パス「/site-b/」を何らかの方法でマッピングしているのですね。
ryo999

2019/10/20 23:58

念のため上記小職のコメントを訂正いたします。「site-bが存在しません」=>「site-bというディレクトリが存在しません」
ryo999

2019/10/21 00:08

TaichiYanagiya様、申し訳ありません。「パス「/site-b/」を何らかの方法でマッピングしているのですね」にお答えするに足る知識がありません(今調べても分からず・・)。何も考えずにワードプレスやレンタルサーバーを使っていて中の動きまでは理解できておりません。
ryo999

2019/10/21 00:49

TaichiYanagiya様、できました!ちょっと感動です。ありがとうございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問