単につなぎ合わせると、
Apache
1RewriteEngine On
2RewriteCond %{HTTP_USER_AGENT} (iPhone|iPod|iPad|Android)
3RewriteRule ^$ /sp/ [R]
4RewriteCond %{HTTPS} off
5RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
例えば、http://example.com/foo/
がhttp://example.com/sp/
に書き換わりますが、書き換わっても%{REQUEST_URI}
は、/foo/
のままです。
なので、その次の書き換えでhttps://example.com/foo/
になってしまいます。
案1:
Apache
1RewriteEngine On
2RewriteCond %{HTTP_USER_AGENT} (iPhone|iPod|iPad|Android)
3RewriteRule ^$ /sp/ [R,L]
4RewriteCond %{HTTPS} off
5RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
とここにL
をつけて/sp/
に書き換えた段階で一度ブラウザにレスポンスを返し、リクエストし直してもらう。
今度はURLがhttp://example.com/sp/
でリクエストがし直され、今回は%{REQUEST_URI}
は/sp/
なのでhttps://example.com/sp/
にリダイレクトされます。
案2:
%{REQUEST_URI}
を使わない。せっかく正規表現を括弧で囲んでいるので、$1
をつかう。
Apache
1RewriteEngine On
2RewriteCond %{HTTP_USER_AGENT} (iPhone|iPod|iPad|Android)
3RewriteRule ^$ /sp/ [R]
4RewriteCond %{HTTPS} off
5RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=301,L]
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/10/14 12:25
2021/10/14 23:14
2021/10/15 04:57