</div>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress
RewriteEngine On
RewriteCond %{REQUEST_URI} !^/robots.txt$
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteCond %{ENV:HTTPS} !^on$
RewriteCond %{HTTP:X-SAKURA-FORWARDED-FOR} ^$
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
**wp-config.php 追記分**
// プロクシでIPが入るとSSLアクセス状態をセットする
// [https://dt-a.net/seo/seo-tips/sni-ssl-wordpress/](https://dt-a.net/seo/seo-tips/sni-ssl-wordpress/)
// [http://studio110.info/wordpress-2/1615/](http://studio110.info/wordpress-2/1615/)
if( isset($_SERVER[‘HTTP_X_SAKURA_FORWARDED_FOR’]) ) {
$_SERVER[‘HTTPS’] = 'on';
$_ENV[‘HTTPS’] = 'on';
$_SERVER[‘HTTP_HOST’] = 'domain.org';
$_SERVER[‘SERVER_NAME’] = 'domain.org';
$_ENV[‘HTTP_HOST’] = 'domain.org';
$_ENV[‘SERVER_NAME’] ='domain.org';
}
上記の参考にしたURLのいくつかでも2017年4月の追記で「さくらではリバースプロクシのmod_rewriteをサポートしない」という話がいくつか出ています.で,そういうサイトはURLが鍵緑ではなく「混在」になっています(このサイトはまだSSL設定していないので「保護されていません」です).
なお,これのおかげで最強のバックアッププラグイン「BackWPup」なども動かない説もあり.
## WordpressのCSSだけ崩れる問題と Really Simple SSL
上記の設定でも「共有」まではいきます,少なくともサイトのアクセストップだけは鍵緑になりますが,ソースを見てみると,テーマのCSSへのアクセスだけが「http://自サイト」になっており,クリックするとリダイレクトでHTTPSになります.設定によってはHTTPとHTTPSでリダイレクトループに入り,サイトが表示されなくなります.問題は上記のリバースプロクシと,rewriteに起因するのですが,細かい設定ができないから仕方ない.
このような問題を解決するためのプラグインとしていくつかのサイトでは「[**Really Simple SSL**](https://ja.wordpress.org/plugins/really-simple-ssl/)」プラグインが便利であったと書かれています.ですがこれは時間の浪費でした.このプラグインは3つの機能があり,Wordpressによるリライト,301リダイレクト,JavaScriptによるリライトを実施し,サイトやコンテンツを一つ一つ書きなおさなくてもよい…という触れ込みです.実際には .htaccess を勝手に書き換えますので,上記の特殊仕様が入っている環境では慎重に使ったほうが良いと思います.私はこいつのおかげでとてもはまりました.上記のさくら特有の設定などは無視ですので.
## どうやって解決するか?
さて,今回の問題ですが,結局以下のような解決策をとりました.
(1) コントロールパネルは[www]と[wwwなし]を共用,.htaccess はできるだけシンプルに
(2) wp-config.php には上記のサーバー変数を一応書いておく.コントロールパネル「一般」のサイトアドレスはhttpsのwwwなしで統一.
(3) サイトにアクセスして,ソース表示して,CSS以外はhttpsでアクセスできていることを確認する(表示は崩れている).
(4) 「[SSL Insecure Content Fixer](https://ja.wordpress.org/plugins/ssl-insecure-content-fixer/)」というSSL用のリライトプラグインを導入
インストールして設定で「Capture, unable to detect HTTPS」にチェックするだけ.おそらくリライト後のHTML全部をキャプチャして http:// になっているところを書き換えている,とても重い処理と思うのだが,たくさんあるわけではないし,要はこれをやってほしかっただけなので,もうこれでいいと思う!.htaccessに怪しい設定するほうが危険だし,リダイレクトループに入っている頃に比べれば全然快適に動いています.一日悩んだけど解決してよかった!
## おまけ:レンタルサーバ公式のプラグインがあればいいのに…と思ったら
さくらのサーバー向けにSSL対応させるWordpressプラグインがあればいいんですよね,実際WordpressのプラグインでSSL関連を見ていると「[CloudFlare Flexible SSL](https://ja.wordpress.org/plugins/cloudflare-flexible-ssl/)」などCDN業者提供のプラグインもちらほら見えます.最近提供されているWebフォント「TypeSquare」なんかも[さくら](https://ja.wordpress.org/plugins/ts-webfonts-for-sakura/)も[GMOお名前.com](https://ja.wordpress.org/plugins/ts-webfonts-for-onamaecom/)も同じようなサポートプラグインをWordpressのプラグインで出しているから,できることなんじゃないかと思います.ちなみにTypeSquareはどちらの会社も月間25000PVまでは無料という微妙な設定ですが,さくらは9,000インストール,GMOは100以下….
っていうか「[Sakura](https://ja.wordpress.org/plugins/search/Sakura/)」でWordpressプラグイン検索してたら「[さくらのレンタルサーバ 簡単SSL化プラグイン 作者: SAKURA Internet Inc.](https://ja.wordpress.org/plugins/sakura-rs-wp-ssl/)」ってプラグインがあったのですけど!早くいってよ!...ってことで試してみました.
> **重大なエラー**を引き起こしたため、プラグインを有効化できませんでした。 **Fatal error**: Arrays are not allowed in class constants in **/home/user/www/wordpress/wp-content/plugins/sakura-rs-wp-ssl/modules/model/force-ssl.php** on line **32**
おあとがよろしいようで….そもそもインストールできないレベルだと試せない,まあ[このドキュメント](https://help.sakura.ad.jp/hc/ja/articles/115000051662)は役に立ちそう.