.htaccess と「サイト転送設定」で『なんでやねん』の挙げ句
2023-10-07 記載
概要:cloudfreeにてWordPressを常時SSLでアクセスさせる設定
Keyword : WordPress, SSL, .htaccess, cloudfree,
WordPressの開かれ方に関して。
ここcloudfreeではせっかく無料でSSLが使えるようになったのに、なかなかSSLで開けませんでした。その対処についてレポートしておきます。
まず要件として――
管理人が勉強中のため、こちらドメイン web.cloudfree.jp のトップページは未作成です。
ひとまずトップページは空のままにして、勉強内容の報告をするWordPressを web.cloudfree.jp/journal/ に配置しました。
WordPressは公開したいので、コンテンツが空のあいだは web.cloudfree.jp がリクエストされたら web.cloudfree.jp/journal/ へリダイレクトされるようにする。もちろんhttpsで。
――というものです。
いろいろ試行錯誤して、ようやく思い通りにできましたので、振り返ってみての要点を整理しておきます。
●まずWordPress自体の設定を。
管理画面→設定で「WordPress アドレス (URL)」「サイトアドレス (URL)」の2項目を https:// に変更。
● [cloudfreeのサーバーパネル→ホームページ→サイト転送設定]
ここの設定は.htaccessを代理編集しているだけである。
しかし修正ができず、さらに2ステップの編集を書いたらどういう順番になってるか不明である。
よって限定的なページURLを限定的なページURLに転送するためのもの、と割り切って使うのがよさそう。
つまり基本は .htaccess だと考えておくのがよさそう。
●で、web.cloudfree.jp/journal/ の .htaccess を以下のように記述。
# BEGIN WordPress ~ # END WordPress はあらかじめ記述済み
先頭5行を追加しました。
http でアクセスされたら https に書き換える、という内容です。
※以下コード、your_sid はサーバID、wp_folder は各自環境の値。(私の場合は journal)
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
</IfModule>
# BEGIN WordPress
# "BEGIN WordPress" から "END WordPress" までのディレクティブ (行) は
# 動的に生成され、WordPress フィルターによってのみ修正が可能です。
# これらのマーカー間にあるディレクティブへのいかなる変更も上書きされてしまいます。
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
RewriteBase /wp_folder/
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /wp_folder/index.php [L]
</IfModule>
# END WordPress
● your_sid.cloudfree.jp を your_sid.cloudfree.jp/wp_folder/ へリダイレクトさせるのと、
常時SSLにする your_sid.cloudfree.jp/public_html/.htaccess の設定は、
SetEnvIf Request_URI ".*" Ngx_Cache_NoCacheMode=off
SetEnvIf Request_URI ".*" Ngx_Cache_StaticMode
<IfModule mod_rewrite.c>
RewriteEngine on
# httpからの通信を、httpsにリダイレクト
RewriteCond %{HTTPS} off
RewriteRule ^.*$ https://your_sid.cloudfree.jp%{REQUEST_URI} [R=301,L]
# ドメイン直下へのリクエストをjournal/にリダイレクト
Redirect 302 /index.html https://your_sid.cloudfree.jp/wp_folder/
</IfModule>
これで配置すると [cloudfreeのサーバーパネル→ホームページ→サイト転送設定] は、ここからは書き込んでいないのに、直接.htaccessを読み取って、
http(s)://your_sid.cloudfree.jp/index.html https://your_sid.cloudfree.jp/wp_folder/ 302
と表示してくれてます。
でも『がんばって調べて今後もずっと .htaccess を自分で編集するよ』という人は、[サイト転送設定]はもう見ないでよいかと思います。
で、[サイト転送設定]だけで大抵のことができるかというとそうでもないので、がんばる人になるしかない、という結論になるのでありました。