質問をすることでしか得られない、回答やアドバイスがある。

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

新規登録して質問してみよう
ただいま回答率
85.48%
WordPress

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

Movable Type

シックス・アパートが開発・提供する,ブログで用いられることの多いCMS製品

Q&A

解決済

2回答

1139閲覧

htaccessを使ったリダイレクトで階層構造が引き継がれてしまう

sicilia_lemon

総合スコア7

WordPress

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

Movable Type

シックス・アパートが開発・提供する,ブログで用いられることの多いCMS製品

0グッド

0クリップ

投稿2018/12/11 08:05

前提・実現したいこと

ご覧いただきありがとうございます。
.htaccessを使い、一律で同一ページにリダイレクトさせる…というシンプルなことを実現したいのですが、なぜかうまくいきません。

旧サイトのどんなページにアクセスしても、新サイトの特定ページ(「移転しました」というお知らせページ)に飛ばしたいと考えています。

発生している問題・エラーメッセージ

具体的には、リダイレクト元の階層構造がリダイレクト先にも引き継がれてしまいます。

該当のソースコード

以下をリダイレクト元のルート直下に設置しました。

htaacess

1<IfModule mod_rewrite.c> 2RewriteEngine On 3RewriteRule .* https://new-domain.com/renewal/ [R=301,L] 4</IfModule>

上記を設置したうえで、
https://old-domain.com/about/ にアクセスすると、
https://new-domain.com/renewal/about/ にリダイレクトされます。
(リダイレクト元の /about/ が、リダイレクト先にもついてきてしまう)

htaccessのファイル内には上記以外、何も書かれていない状態です。

試したこと

あまり意味がなさそうだなと思いつつ、以下のようにしてみたり、「[R=301,L]」を削除してみたりしましたが、結果は変わりませんでした。

htaacess

1RewriteRule (.*)$ https://new-domain.com/renewal/ [R=301,L]

htaacess

1Redirect permanent / https://new-domain.com/renewal/

キャッシュの可能性も考慮して、毎回Chromeのシークレットウィンドウを新規で立ち上げてアクセスしていますが、だめでした。

補足情報(FW/ツールのバージョンなど)

リダイレクト元のサイトはMovable Typeでつくられていました。
リダイレクト先の新サイトはWordPressでつくられています。
リダイレクト先の方で何か起きているということもありえるのでしょうか。。

何か知見をお持ちの方がいらっしゃれば幸いです。
よろしくお願いいたします。

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

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

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

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

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

guest

回答2

0

new-domain.comは実在のドメインなので、以下ではexample.comと記述します。

Apache

1Redirect permanent / https://example.com/renewal/

だとお書きの状況になります。

Apache

1RewriteEngine On 2RewriteRule .* https://example.com/renewal/ [R=301,L]

では、お書きの状況にはなりません。常にhttps://example.com/renewal/にリダイレクトされます。
お書きの状況になるのであれば、設定または確認方法のどちらかに間違いがあります。

投稿2018/12/11 12:29

otn

総合スコア84505

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

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

sicilia_lemon

2018/12/12 02:35

otnさん ご回答ありがとうございます。 実在のドメインを書かない方がよい件もご指摘ありがとうございました(学習します…)。 コメントいただいた内容ですが、いずれも自分で試した際に意図した動きをしませんでした。 意図した動きとは、 https://example旧.com/ 配下にアクセスすると、 https://example新.com/renewal/ に一律でリダイレクトさせるというものです。 うまくいかなかった方法で試した際、 例えば、 https://example旧.com/about/ にアクセスすると、 https://example新.com/renewal/about/ となってしまいました。 (/about/がくっついてきてしまう) 別途コメントいただいた以下にしたところ、上記でいう /about/ はくっついてこなくなりました。 ``` <Files ~ "^.ht"> deny from all </Files> # Redirect RedirectMatch 301 (.*) https://new-domain.com/renewal/ ```
otn

2018/12/12 02:51

> 意図した動きとは、 > うまくいかなかった方法で試した際、 それは質問に書いてあるので、承知しています。 RewriteRule .* https://example.com/renewal/ [R=301,L] と書いたのに、その状況になるのであれば、設定または確認方法のどちらかに間違いがあります。
guest

0

ベストアンサー

<Files ~ "^.ht"> deny from all </Files> # Redirect RedirectMatch 301 (.*) https://new-domain.com/renewal/

でうまくいきませんか?

投稿2018/12/11 08:50

編集2018/12/11 08:53
退会済みユーザー

退会済みユーザー

総合スコア0

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

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

sicilia_lemon

2018/12/11 10:30

yoshi0819さん さっそくのご回答、ありがとうございます! 試してみたところ、期待通り動作しました。 いただいた内容の意味については自分でも調べてみます。 大変助けられました。重ね重ね、ありがとうございます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問