[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] が動作しません。
とのことだったので、
- [L]フラグはあってもなくても変わらない(らしい)
- 後に記述されている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