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

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

新規登録して質問してみよう
ただいま回答率
85.50%
さくらのレンタルサーバ

さくらのレンタルサーバとは、格安サーバーで知られるさくらインターネット社の提供する共有レンタルサーバー。Webサイトの構築から簡単なプログラミングまで幅広く利用することができ、プランが多いことも特徴です。

WordPress

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

.htaccess

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

Q&A

解決済

1回答

802閲覧

古いサイトURLから新しいWordPressのURLへリダイレクト

R-teratail

総合スコア10

さくらのレンタルサーバ

さくらのレンタルサーバとは、格安サーバーで知られるさくらインターネット社の提供する共有レンタルサーバー。Webサイトの構築から簡単なプログラミングまで幅広く利用することができ、プランが多いことも特徴です。

WordPress

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

.htaccess

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

0グッド

0クリップ

投稿2022/03/01 16:08

編集2022/03/06 15:55

さくらのレンタルサーバーにて、新しくWordPressでサイトを作成しました。
古いサイトURLから新しいWordPressのURLへリダイレクトさせたいのですが、全くリダイレクトされません。
知識が乏しく、色々なサイトで調べたのですが書き方が多すぎて混乱してしまいました。記述が間違っているのか、そもそも.htaccessを設置する場所が間違っているのかも分からず、どなたかご教授いただければ幸いです。

前提

  • WordPressはルート直下に設置したサブディレクトリ「wp」の中にインストール
  • 「wp」はURL上で見えないように設定されている
  • ルート直下の.htaccessに記述
  • # BEGIN WordPressより上に記述

やりたいこと

例.
https://example.jp/old-page/index.html
https://example.jp/old-page/1/index.html
https://example.jp/old-page/2/index.html
https://example.jp/old-page/2/2/index.html

など、「old-page」以下の旧URLを

https://example.jp/page/ へ纏めてリダイレクトさせたい。

書いてみた記述(どちらも失敗)

htaccess

1<IfModule mod_rewrite.c> 2RewriteEngine On 3RewriteCond %{REQUEST_URI} ^(/old-page/) [NC] 4RewriteRule .* https://example.jp/page/ [R=302] 5</IfModule>

htaccess

1<IfModule mod_rewrite.c> 2RewriteEngine On 3RewriteBase / 4RewriteRule ^old-page/(.*)$ https://example.jp/page/ [R=302] 5</IfModule>

※うまくリダイレクトされるまでは[302]でテスト中です。

もしかして「wp」直下の.htaccessに書かないといけないのか、と思いやってみましたがダメでした。
どなたかご教授いただければ幸いです。よろしくお願いします。

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

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

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

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

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

m.ts10806

2022/03/01 23:08

ドメイン所有者でないのなら例示ドメインを利用されたほうが良いです。 特に、今質問に提示されているドメインは実在し、且つアダルトサイトのように見受けられます。
otn

2022/03/02 01:01 編集

> 全くリダイレクトされません。 というのは、具体的にどういう現象でしょうか? アドレスバーが、~~/old-page/index.html というURLのままと言うこと?
R-teratail

2022/03/02 00:51

m.ts10806様 ご指摘ありがとうございます。ドメインを変更致しました。
R-teratail

2022/03/02 00:55

otn様 >アドレスバーが、~~/old-page/index.html というURLのままと言うこと? はい、そうです。 ページ更新時にchromeの開発者ツール>ネットワークでステータスを見ているのですが、一番上が404で始まっていて全くリダイレクトされている形跡がありません。 (うまくリダイレクトされている他のページでは、ステータスの一番上が302 or 301などリダイレクトで始まっています。)
otn

2022/03/02 01:11

テスト可能であれば、.htaccessにでたらめな文字列を書いて 500 Internal Server Error になることを確認してみてください。本番稼働中なら無理ですが。 500エラーにならなければ、.htaccessは読まれていないと言うことになります。
R-teratail

2022/03/02 04:33

otn様 ご助言ありがとうございます。WordPressは正常に表示されるので、多分.htaccessも読み込まれていると思うのですが、一応メンテ時間内に試してみます。
otn

2022/03/02 05:33

あ、そうか。WordPress用の記述はあるんですものね。失礼しました。 RewriteEngine On RewriteRule ^old-page/(.*)$ https://example.jp/page/ [R=302] で良いはずなので、もしかして読まれてないかと疑いました。あとはタイプミスがなければ。
R-teratail

2022/03/04 00:56

otn様 返信が遅くなり申し訳ありません。昨夜メンテ中に適当な文字を入力してみたところ、500エラーになりましたのでファイル自体は読み込まれていました。そしてついでに数撃ちゃ当たる戦法で色々入力してみたところ、無事自己解決に至りました。。 お騒がせして申し訳ありませんでした。お時間割いて下さり、本当にありがとうございました。
guest

回答1

0

自己解決

[L]フラグがないのがダメだったようです。
<IfModule mod_rewrite.c>RewriteBase /はなくても動きました。)

動いたコード

htaccess

1RewriteEngine On 2RewriteRule ^old-page/(.*)$ https://example.jp/page/ [R=302,L]

参考サイト

▼【Apache入門 › .htaccessの使い方】RewriteRuleディレクティブ:URLのリライト/リダイレクトを行う
https://www.javadrive.jp/apache/htaccess/index4.html

RewriteRuleについて詳しく解説している上記のサイト曰く、

なお正規表現にマッチしてリライトやリダイレクトが行われたあと、これ以上他の RewriteRule ディレクティブとマッチするかどうか調べないようにするためのフラグとして [L] が用意されているのですが、 .htaccess ではフラグ [L] が動作しません。

とのことだったので、

  1. [L]フラグはあってもなくても変わらない(らしい)
  2. 後に記述されているWordPress用のリダイレクトもちゃんと処理してほしい

と思ってわざとLをつけていなかったのですが、どうやら[L]フラグにはちゃんと意味があったようです…。

勉強不足でなぜ[L]フラグの有無でリダイレクト処理に影響を及ぼすのかが理解できていないのですが、とりあえず本質問は解決済とさせていただきます。

なお、今更ですが.htaccessの全文を掲載しておきます。

htaccess

1# index.phpを優先的に読み込む 2DirectoryIndex index.php index.html index.htm index.shtml index.cgi 3Options -Indexes 4 5# 重要なファイルへのアクセス制限 6<Files ~ "^\.(htaccess|htpasswd)$"> 7deny from all 8</Files> 9<FilesMatch "^(wp-config\.php|wp-cron\.php)"> 10order allow,deny 11deny from all 12</FilesMatch> 13 14# 今回質問したリダイレクト処理はここに記述 15 16# 以下、さくらのレンタルサーバー公式よりコピペ 17# wwwなし、httpsに統一 18<IfModule mod_rewrite.c> 19RewriteEngine On 20RewriteCond %{HTTP_HOST} ^(www\.example\.jp) [NC] 21RewriteRule ^(.*) https://example.jp/$1 [R=302,L] 22RewriteCond %{HTTPS} off 23RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=302,L] 24</IfModule> 25# さくらのレンタルサーバーの初期ドメインを表示させない 26RewriteEngine On 27RewriteCond %{HTTP_HOST} ^(www\.)?[^.]+\.sakura\.ne\.jp$ [NC] 28RewriteRule .* http://example.jp%{REQUEST_URI} [R=302,L] 29 30 31# 以下、WordPress管理画面よりコピペ 32# BEGIN WordPress 33<IfModule mod_rewrite.c> 34RewriteEngine On 35RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}] 36RewriteBase / 37RewriteRule ^index\.php$ - [L] 38 39# add a trailing slash to /wp-admin 40RewriteRule ^([_0-9a-zA-Z-]+/)?wp-admin$ $1wp-admin/ [R=301,L] 41 42RewriteCond %{REQUEST_FILENAME} -f [OR] 43RewriteCond %{REQUEST_FILENAME} -d 44RewriteRule ^ - [L] 45RewriteRule ^([_0-9a-zA-Z-]+/)?(wp-(content|admin|includes).*) wp/$2 [L] 46RewriteRule ^([_0-9a-zA-Z-]+/)?(.*\.php)$ wp/$2 [L] 47RewriteRule . index.php [L] 48</IfModule> 49# END WordPress 50

投稿2022/03/04 00:56

R-teratail

総合スコア10

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

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

otn

2022/03/05 05:29

なるほど、 RewriteRule . index.php というのにマッチしてしまうんですね。 アドレスバーが、~~/old-page/index.html であっても、ページ内容は /index.php の処理結果が表示されていたのでは? > .htaccess ではフラグ [L] が動作しません。 は間違いですね。
R-teratail

2022/03/06 06:55

otn様 コメントありがとうございます。 恐らくおっしゃる通りなのかと思います。お恥ずかしながらリダイレクトとリライトの違いも認識していなかったので、アドレスバーと表示されているページが違うかもという発想すらありませんでした…。 1つ気になるのは、表示されていたのは404ページだったので、「/index.php=TOPページ」ではなかったことです。何のページが表示されていたのか調べようと思って、 RewriteRule . index.php [L] を RewriteRule . index.php [R=302,L] に書き換えてみたところ 急に「/index.php=TOPページ」にリダイレクトされました。Rフラグを削除するとまた404ページになりました。。謎です。 >間違いですね。 はい。「.htaccess ではフラグ [L] が(これ以上調べないようにするためのフラグとしては)動作しません。」という意味だったのを私が()の中身を勘違いしてしまったようです。。 つくづく知識不足を実感いたしましたので、もっと勉強して、また何か分かったことがあれば追記しようと思います。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問