Easy SSL Plugin for SAKURA Rental Server - Version 1.3

Version Description

* example.com www.example.com

Download this release

Release Info

Developer sakurainternet
Plugin Icon 128x128 Easy SSL Plugin for SAKURA Rental Server
Version 1.3
Comparing to
See all releases

Code changes from version 1.2 to 1.3

client/js/tags.js CHANGED
@@ -1,7 +1,7 @@
1
  riot.tag2('sakuraabout', '<div> <h2>プラグインについて</h2> <p> このプラグインはさくらのレンタルサーバ上のWordPressサイトの設定を変更して、常時SSL化を簡単に行えるプラグインです。<br> 実行の前に準備が必要ですので、以下のチェックリストをご確認の上、チェックボックスにチェックを入れてから「SSL化を実行する」ボタンをクリックしてください。 </p> <p>詳しいプラグインの使い方・注意事項は<a href="https://help.sakura.ad.jp/hc/ja/articles/115000047641" target="_blank">サポートサイト</a>をご確認ください。 </div>', '', '', function(opts) {
2
  });
3
 
4
- riot.tag2('sakurassladmin', '<div> <sakuranotice></sakuranotice> <sakuraabout></sakuraabout> <hr hide="{opts.ssl_status == \'true\'}"> <dl hide="{opts.ssl_status == \'true\'}"> <dt> <input type="checkbox" name="is_registered_ssl" id="is_registered_ssl" checked="{state.is_registered_ssl}" onclick="{toggle}"> <label for="is_registered_ssl"> <b>共有SSLを利用している、もしくはSSL証明書を購入してレンタルサーバコントロールパネルから設定した</b> </label> </dt> <dd> <p> →未設定の方はサポートサイトをご確認の上、証明書の購入と設定をお願いします。<br> さくらのSSLでRapid SSLを購入すると、設定がより簡単に行えます。<br> 購入はレンタルサーバコントロールパネルより可能です。<br> <a href="https://help.sakura.ad.jp/hc/ja/articles/206056822" target="_blank"> 【ラピッドSSL】サーバコントロールパネルからの申込み・導入手順 </a><br> </p> </dd> <dt> <p><span class="checkbox-indent" role="presentation"></span><b>利用しているSSL証明書の種類を選択してください。</b></p> </dt> <dd> <p> <label> <input type="radio" name="ssl_type" value="sni" checked="{state.ssl_type == \'sni\'}" onclick="{changeSSLType}"> SNI SSL / 共有SSL </label> <label> <input type="radio" name="ssl_type" value="no_sni" checked="{state.ssl_type == \'no_sni\'}" onclick="{changeSSLType}"> 独自SSL(IPアドレスベース) </label> </p> <ul> <li> ※レンタルサーバビジネスプロ、マネージドサーバ以外のお客様はSNI SSLを選択してください。 </li> <li> ※ビジネスプロ、マネージドサーバのお客様は独自SSLを選択されている方のみ「独自SSL」を選択してください。<br> どちらの証明書を利用しているかわからない方は、<a href="https://help.sakura.ad.jp/hc/ja/articles/115000047641" target="_blank">サポートサイト</a>をご確認ください。 </li> </ul> </dd> <dt> <input type="checkbox" name="can_access_by_ssl" id="can_access_by_ssl" checked="{state.can_access_by_ssl}" onclick="{toggle}"> <label for="can_access_by_ssl"> <b>実際にSSLを利用してサイトと管理画面へアクセスできる。</b> </label> </dt> <dd> <ul> <li><a href="{opts.home_url}" target="_blank">{opts.home_url}</a></li> <li><a href="{opts.admin_url}" target="_blank">{opts.admin_url}</a></li> </p> </dd> </dl> <hr> <sakuraupdate ssl="{state.ssl_type}"></sakuraupdate> <hr show="{opts.ssl_status == \'true\'}"> <div show="{opts.ssl_status == \'true\'}"> <h2>このサイトでは常時SSL設定が有効化されています<h2> <p>有効化後に.htaccessを直接編集した場合、予期せぬ動作を起こす可能性がありますのでご了承ください。</p> <p>なお常時SSL設定を再度実施される場合は、一度プラグインを停止後再度有効化してください。</p> </div> <p class="submit" hide="{opts.ssl_status == \'true\'}"> <input type="submit" name="submit" id="submit" class="button button-primary button-large" value="SSL化を実行する" disabled="{state.ssl_enable}"> <span show="{state.ssl_enable}">チェックリスト内容を全て確認してください。</span> </p> </div>', 'sakurassladmin .checkbox-indent,[data-is="sakurassladmin"] .checkbox-indent{ display: inline-block; width: 23px; } sakurassladmin .sakura-modal-row,[data-is="sakurassladmin"] .sakura-modal-row{ position: fixed; top: 0; left: 0; background: rgba(0,0,0,0.8); height: 100%; width: 100%; z-index: 9999; display: -webkit-box; display: -moz-box; display: box; display: -webkit-flex; display: -moz-flex; display: -ms-flexbox; display: flex; -webkit-box-align: center; -moz-box-align: center; box-align: center; -webkit-align-items: center; -moz-align-items: center; -ms-align-items: center; -o-align-items: center; align-items: center; -ms-flex-align: center; -webkit-box-orient: vertical; -moz-box-orient: vertical; box-orient: vertical; -webkit-flex-direction: column; -moz-flex-direction: column; flex-direction: column; -ms-flex-direction: column; -webkit-box-pack: center; -moz-box-pack: center; box-pack: center; -webkit-justify-content: center; -moz-justify-content: center; -ms-justify-content: center; -o-justify-content: center; justify-content: center; -ms-flex-pack: center; } sakurassladmin .sakura-modal,[data-is="sakurassladmin"] .sakura-modal{ background: #fff; padding: 20px; overflow: scroll; }', '', function(opts) {
5
  var self = this
6
  self.state = {
7
  'is_registered_ssl': false,
@@ -35,7 +35,7 @@ riot.tag2('sakuranotice', '<div class="notice-warning notice"> <p class="notice-
35
  riot.tag2('snihtaccess', '<div class="sakura-modal-row"> <div class="sakura-modal"> <h2>書き込む.htaccessソース</h2> <h3>SNI SSL / 共有SSL</h3> <pre>\n# BEGIN Force SSL for SAKURA\n# RewriteしてもHTTPS環境変数を有効にする\nSetEnvIf REDIRECT_HTTPS (.*) HTTPS=$1\n\n# 常時HTTPS化(HTTPSが無効な場合リダイレクト)\n&lt;IfModule mod_rewrite.c&gt;\nRewriteEngine on\nRewriteCond %{⁗{⁗}ENV:HTTPS{⁗}⁗} !on\nRewriteCond %{⁗{⁗}REQUEST_URI{⁗}⁗} !/wp-cron\\.php$\nRewriteRule .* https://%{⁗{⁗}HTTP_HOST{⁗}⁗}%{⁗{⁗}REQUEST_URI{⁗}⁗} [R=301,L]\n&lt;/IfModule&gt;\n# END Force SSL for SAKURA\n </pre> <span class="button button-primary button-large" onclick="{opts.close}">閉じる</span> </div> </div>', '', '', function(opts) {
36
  });
37
 
38
- riot.tag2('sakuraupdate', '<section> <h2>このプラグインにより設定される内容</h2> <ul> <li> .htaccessを編集し、httpでのリクエストを全てhttpsにリダイレクトします。<br> <a onclick="{toggle}">詳しい設定内容を見る</a> </li> <li> WordPressのサイト設定を変更し、サイトのURLをhttpからhttpsに切り替えます。<br> ※切り替え以前の画像URLや投稿URLはすべてhttpsに置換されます。 </li> </ul> <p class="sakura-notice"> チェック内容を確認し、全てのチェックボックスにチェックを入れてからボタンをクリックしてください。 </p> <hr> <h2>設定後の動作について</h2> <ul> <li>※変更した内容を取り消したい場合は、プラグインを停止してください。変更内容は全て元に戻ります。</li> <li>※プラグインを停止するとSSL化されなくなります。SSLを利用している間はこのプラグインを有効化したままでご利用ください。</li> <li> ※SSL化以降の投稿やメディアファイルのURLは全て「https」となります。httpに戻す場合は置換作業が必要です。<br> SSL化した後に、もとに戻したい場合は<a href="https://help.sakura.ad.jp/hc/ja/articles/115000047641" target="_blank">サポートサイト</a>をご確認ください。 </li> <li>※SSL化を実行すると一旦ログアウトされ、httpsのログイン画面にリダイレクトされます。同じIDとパスワードでログインできます。</li> </ul> <snihtaccess if="{showHtaccess && opts.ssl == \'sni\'}" close="{close}"></snihtaccess> <nosnihtaccess if="{showHtaccess && opts.ssl != \'sni\'}" close="{close}"></nosnihtaccess> </section>', 'sakuraupdate .sakura-notice,[data-is="sakuraupdate"] .sakura-notice{ color: red; font-weight: bold }', '', function(opts) {
39
  var self = this
40
  self.showHtaccess = false
41
  this.toggle = function (e) {
1
  riot.tag2('sakuraabout', '<div> <h2>プラグインについて</h2> <p> このプラグインはさくらのレンタルサーバ上のWordPressサイトの設定を変更して、常時SSL化を簡単に行えるプラグインです。<br> 実行の前に準備が必要ですので、以下のチェックリストをご確認の上、チェックボックスにチェックを入れてから「SSL化を実行する」ボタンをクリックしてください。 </p> <p>詳しいプラグインの使い方・注意事項は<a href="https://help.sakura.ad.jp/hc/ja/articles/115000047641" target="_blank">サポートサイト</a>をご確認ください。 </div>', '', '', function(opts) {
2
  });
3
 
4
+ riot.tag2('sakurassladmin', '<div> <sakuranotice></sakuranotice> <sakuraabout></sakuraabout> <hr hide="{opts.ssl_status == \'true\'}"> <dl hide="{opts.ssl_status == \'true\'}"> <dt> <input type="checkbox" name="is_registered_ssl" id="is_registered_ssl" checked="{state.is_registered_ssl}" onclick="{toggle}"> <label for="is_registered_ssl"> <b>共有SSLを利用している、もしくはSSL証明書をレンタルサーバコントロールパネルから設定した</b> </label> </dt> <dd> <p> →未設定の方はSSL証明書の設定をお願いします。<br> さくらのレンタルサーバでは無料SSL機能が利用できます。<br> 設定方法は<a href="https://help.sakura.ad.jp/hc/ja/articles/115000136822" target="_blank">サポートサイト</a>をご確認ください。 </p> </dd> <dt> <p><span class="checkbox-indent" role="presentation"></span><b>利用しているSSL証明書の種類を選択してください。</b></p> </dt> <dd> <p> <label> <input type="radio" name="ssl_type" value="sni" checked="{state.ssl_type == \'sni\'}" onclick="{changeSSLType}"> SNI SSL / 共有SSL </label> <label> <input type="radio" name="ssl_type" value="no_sni" checked="{state.ssl_type == \'no_sni\'}" onclick="{changeSSLType}"> 独自SSL(IPアドレスベース) </label> </p> <ul> <li> ※レンタルサーバビジネスプロ、マネージドサーバ以外のお客様はSNI SSLを選択してください。<br> どちらの証明書を利用しているかわからない方は、<a href="https://help.sakura.ad.jp/hc/ja/articles/115000047641" target="_blank">サポートサイト</a>をご確認ください。 </li> </ul> </dd> <dt> <input type="checkbox" name="can_access_by_ssl" id="can_access_by_ssl" checked="{state.can_access_by_ssl}" onclick="{toggle}"> <label for="can_access_by_ssl"> <b>実際にSSLを利用してサイトと管理画面へアクセスできる。</b> </label> </dt> <dd> <ul> <li><a href="{opts.home_url}" target="_blank">{opts.home_url}</a></li> <li><a href="{opts.admin_url}" target="_blank">{opts.admin_url}</a></li> </p> </dd> </dl> <hr> <sakuraupdate ssl="{state.ssl_type}"></sakuraupdate> <hr show="{opts.ssl_status == \'true\'}"> <div show="{opts.ssl_status == \'true\'}"> <h2>このサイトでは常時SSL設定が有効化されています<h2> <p>有効化後に.htaccessを直接編集した場合、予期せぬ動作を起こす可能性がありますのでご了承ください。</p> <p>なお常時SSL設定を再度実施される場合は、一度プラグインを停止後再度有効化してください。</p> </div> <p class="submit" hide="{opts.ssl_status == \'true\'}"> <input type="submit" name="submit" id="submit" class="button button-primary button-large" value="SSL化を実行する" disabled="{state.ssl_enable}"> <span show="{state.ssl_enable}">チェックリスト内容を全て確認してください。</span> </p> </div>', 'sakurassladmin .checkbox-indent,[data-is="sakurassladmin"] .checkbox-indent{ display: inline-block; width: 23px; } sakurassladmin .sakura-modal-row,[data-is="sakurassladmin"] .sakura-modal-row{ position: fixed; top: 0; left: 0; background: rgba(0,0,0,0.8); height: 100%; width: 100%; z-index: 9999; display: -webkit-box; display: -moz-box; display: box; display: -webkit-flex; display: -moz-flex; display: -ms-flexbox; display: flex; -webkit-box-align: center; -moz-box-align: center; box-align: center; -webkit-align-items: center; -moz-align-items: center; -ms-align-items: center; -o-align-items: center; align-items: center; -ms-flex-align: center; -webkit-box-orient: vertical; -moz-box-orient: vertical; box-orient: vertical; -webkit-flex-direction: column; -moz-flex-direction: column; flex-direction: column; -ms-flex-direction: column; -webkit-box-pack: center; -moz-box-pack: center; box-pack: center; -webkit-justify-content: center; -moz-justify-content: center; -ms-justify-content: center; -o-justify-content: center; justify-content: center; -ms-flex-pack: center; } sakurassladmin .sakura-modal,[data-is="sakurassladmin"] .sakura-modal{ background: #fff; padding: 20px; overflow: scroll; }', '', function(opts) {
5
  var self = this
6
  self.state = {
7
  'is_registered_ssl': false,
35
  riot.tag2('snihtaccess', '<div class="sakura-modal-row"> <div class="sakura-modal"> <h2>書き込む.htaccessソース</h2> <h3>SNI SSL / 共有SSL</h3> <pre>\n# BEGIN Force SSL for SAKURA\n# RewriteしてもHTTPS環境変数を有効にする\nSetEnvIf REDIRECT_HTTPS (.*) HTTPS=$1\n\n# 常時HTTPS化(HTTPSが無効な場合リダイレクト)\n&lt;IfModule mod_rewrite.c&gt;\nRewriteEngine on\nRewriteCond %{⁗{⁗}ENV:HTTPS{⁗}⁗} !on\nRewriteCond %{⁗{⁗}REQUEST_URI{⁗}⁗} !/wp-cron\\.php$\nRewriteRule .* https://%{⁗{⁗}HTTP_HOST{⁗}⁗}%{⁗{⁗}REQUEST_URI{⁗}⁗} [R=301,L]\n&lt;/IfModule&gt;\n# END Force SSL for SAKURA\n </pre> <span class="button button-primary button-large" onclick="{opts.close}">閉じる</span> </div> </div>', '', '', function(opts) {
36
  });
37
 
38
+ riot.tag2('sakuraupdate', '<section> <h2>このプラグインにより設定される内容</h2> <ul> <li> ・.htaccessを編集し、httpでのリクエストを全てhttpsにリダイレクトします。<br> <a onclick="{toggle}">詳しい設定内容を見る</a> </li> <li> WordPressのサイト設定を変更し、サイトのURLをhttpからhttpsに変更します。<br> 画像URLや投稿URLも置換されます。 </li> </ul> <p class="sakura-notice"> チェック内容を確認し、全てのチェックボックスにチェックを入れてからボタンをクリックしてください。 </p> <hr> <h2>設定後の動作について</h2> <ul> <li>・変更した内容を取り消したい場合は、プラグインを停止してください。</li> <li>・SSL利用中はプラグインを無効化/削除しないでください。</li> <li>・SSL化した後に、もとに戻したい場合は<a href="https://help.sakura.ad.jp/hc/ja/articles/115000051662#01" target="_blank">サポートサイト</a>をご確認ください。</li> <li>・SSL化を実行するとログアウトされますが、同じIDとパスワードでログインできます。</li> </ul> <snihtaccess if="{showHtaccess && opts.ssl == \'sni\'}" close="{close}"></snihtaccess> <nosnihtaccess if="{showHtaccess && opts.ssl != \'sni\'}" close="{close}"></nosnihtaccess> </section>', 'sakuraupdate .sakura-notice,[data-is="sakuraupdate"] .sakura-notice{ color: red; font-weight: bold }', '', function(opts) {
39
  var self = this
40
  self.showHtaccess = false
41
  this.toggle = function (e) {
modules/includes.php CHANGED
@@ -13,6 +13,7 @@ if ( ! defined( 'ABSPATH' ) ) {
13
 
14
  require_once( 'base.php' );
15
  require_once( 'model/force-ssl.php' );
 
16
 
17
 
18
  require_once( 'view/menus.php' );
13
 
14
  require_once( 'base.php' );
15
  require_once( 'model/force-ssl.php' );
16
+ require_once( 'model/redirect-fixture.php' );
17
 
18
 
19
  require_once( 'view/menus.php' );
modules/model/force-ssl.php CHANGED
@@ -263,74 +263,85 @@ class Force_ssl_sakura {
263
  }
264
  }
265
 
266
- private function _insert_sakura_ssl_with_markers( $filename, $marker, $insertion ) {
267
- if ( ! file_exists( $filename ) ) {
268
- if ( ! is_writable( dirname( $filename ) ) ) {
269
- return false;
270
- }
271
- if ( ! touch( $filename ) ) {
272
- return false;
273
- }
274
- } elseif ( ! is_writeable( $filename ) ) {
275
  return false;
276
  }
277
- if ( ! is_array( $insertion ) ) {
278
- $insertion = explode( "\n", $insertion );
279
- }
280
- $start_marker = "# BEGIN {$marker}";
281
- $end_marker = "# END {$marker}";
282
- $fp = fopen( $filename, 'r+' );
283
- if ( ! $fp ) {
284
  return false;
285
  }
286
- // Attempt to get a lock. If the filesystem supports locking, this will block until the lock is acquired.
287
- flock( $fp, LOCK_EX );
288
- $lines = array();
289
- while ( ! feof( $fp ) ) {
290
- $lines[] = rtrim( fgets( $fp ), "\r\n" );
291
- }
292
- // Split out the existing file into the preceding lines, and those that appear after the marker
293
- $pre_lines = $post_lines = $existing_lines = array();
294
- $found_marker = $found_end_marker = false;
295
- foreach ( $lines as $line ) {
296
- if ( ! $found_marker && false !== strpos( $line, $start_marker ) ) {
297
- $found_marker = true;
298
- continue;
299
- } elseif ( ! $found_end_marker && false !== strpos( $line, $end_marker ) ) {
300
- $found_end_marker = true;
301
- continue;
302
- }
303
- if ( ! $found_marker ) {
304
- $pre_lines[] = $line;
305
- } elseif ( $found_marker && $found_end_marker ) {
306
- $post_lines[] = $line;
307
- } else {
308
- $existing_lines[] = $line;
309
- }
310
- }
311
- // Check to see if there was a change
312
- if ( $existing_lines === $insertion ) {
313
- flock( $fp, LOCK_UN );
314
- fclose( $fp );
315
- return true;
 
 
 
 
316
  }
317
- // Generate the new file data
318
- $new_file_data = implode( "\n", array_merge(
319
- array( $start_marker ),
320
- $insertion,
321
- array( $end_marker ),
322
- $pre_lines,
323
- $post_lines
324
- ) );
325
- // Write to the start of the file, and truncate it to that length
326
- fseek( $fp, 0 );
327
- $bytes = fwrite( $fp, $new_file_data );
328
- if ( $bytes ) {
329
- ftruncate( $fp, ftell( $fp ) );
330
  }
331
- fflush( $fp );
 
 
 
332
  flock( $fp, LOCK_UN );
333
  fclose( $fp );
334
- return (bool) $bytes;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
335
  }
 
 
 
 
 
 
336
  }
263
  }
264
  }
265
 
266
+ private function _insert_sakura_ssl_with_markers( $filename, $marker, $insertion ) {
267
+ if ( ! file_exists( $filename ) ) {
268
+ if ( ! is_writable( dirname( $filename ) ) ) {
 
 
 
 
 
 
269
  return false;
270
  }
271
+ if ( ! touch( $filename ) ) {
 
 
 
 
 
 
272
  return false;
273
  }
274
+ } elseif ( ! is_writeable( $filename ) ) {
275
+ return false;
276
+ }
277
+
278
+ if ( ! is_array( $insertion ) ) {
279
+ $insertion = explode( "\n", $insertion );
280
+ }
281
+
282
+ $start_marker = "# BEGIN {$marker}";
283
+ $end_marker = "# END {$marker}";
284
+
285
+ $fp = fopen( $filename, 'r+' );
286
+ if ( ! $fp ) {
287
+ return false;
288
+ }
289
+
290
+ // Attempt to get a lock. If the filesystem supports locking, this will block until the lock is acquired.
291
+ flock( $fp, LOCK_EX );
292
+
293
+ $lines = array();
294
+ while ( ! feof( $fp ) ) {
295
+ $lines[] = rtrim( fgets( $fp ), "\r\n" );
296
+ }
297
+
298
+ // Split out the existing file into the preceding lines, and those that appear after the marker
299
+ $pre_lines = $post_lines = $existing_lines = array();
300
+ $found_marker = $found_end_marker = false;
301
+ foreach ( $lines as $line ) {
302
+ if ( ! $found_marker && false !== strpos( $line, $start_marker ) ) {
303
+ $found_marker = true;
304
+ continue;
305
+ } elseif ( ! $found_end_marker && false !== strpos( $line, $end_marker ) ) {
306
+ $found_end_marker = true;
307
+ continue;
308
  }
309
+ if ( ! $found_marker ) {
310
+ $pre_lines[] = $line;
311
+ } elseif ( $found_marker && $found_end_marker ) {
312
+ $post_lines[] = $line;
313
+ } else {
314
+ $existing_lines[] = $line;
 
 
 
 
 
 
 
315
  }
316
+ }
317
+
318
+ // Check to see if there was a change
319
+ if ( $existing_lines === $insertion ) {
320
  flock( $fp, LOCK_UN );
321
  fclose( $fp );
322
+
323
+ return true;
324
+ }
325
+
326
+ // Generate the new file data
327
+ $new_file_data = implode( "\n", array_merge(
328
+ array( $start_marker ),
329
+ $insertion,
330
+ array( $end_marker ),
331
+ $pre_lines,
332
+ $post_lines
333
+ ) );
334
+
335
+ // Write to the start of the file, and truncate it to that length
336
+ fseek( $fp, 0 );
337
+ $bytes = fwrite( $fp, $new_file_data );
338
+ if ( $bytes ) {
339
+ ftruncate( $fp, ftell( $fp ) );
340
  }
341
+ fflush( $fp );
342
+ flock( $fp, LOCK_UN );
343
+ fclose( $fp );
344
+
345
+ return (bool) $bytes;
346
+ }
347
  }
modules/model/redirect-fixture.php ADDED
@@ -0,0 +1,66 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Sakura redirect loop fixture class
4
+ *
5
+ * @package Sakura_Ssl
6
+ * @author wokamoto <wokamoto@digitalcube.jp>
7
+ * hideokamoto <hide.okamoto@digitalcube.jp>
8
+ **/
9
+
10
+ if ( ! defined( 'ABSPATH' ) ) {
11
+ exit; // Exit if accessed directly.
12
+ }
13
+
14
+ /**
15
+ * Update redirect loop fixture class
16
+ *
17
+ * @class Redirect_fixture_sakura
18
+ **/
19
+ class Redirect_fixture_sakura {
20
+ /**
21
+ * Instance class
22
+ *
23
+ * @var Object $instance instance class
24
+ **/
25
+ private static $instance;
26
+
27
+ /**
28
+ * Get Instance Class
29
+ *
30
+ * @return Redirect_fixture_sakura
31
+ * @since 1.3.0
32
+ * @access public
33
+ */
34
+ public static function get_instance() {
35
+ if ( ! isset( self::$instance ) ) {
36
+ $c = __CLASS__;
37
+ self::$instance = new $c();
38
+ }
39
+ return self::$instance;
40
+ }
41
+
42
+ /**
43
+ * Init plugin menu.
44
+ *
45
+ * @access public
46
+ * @since 1.3.0
47
+ */
48
+ public function init() {
49
+ add_action( 'redirect_canonical', array( $this, 'fix_redirect_loop' ) );
50
+ }
51
+
52
+ /**
53
+ * Replace home url
54
+ *
55
+ * @access public
56
+ * @since 1.3.0
57
+ * @param string $redirect_url The redirect URL.
58
+ * @return string
59
+ **/
60
+ public function fix_redirect_loop($redirect_url) {
61
+ $redirect_url = is_ssl() ? 'https://' : 'http://';
62
+ $redirect_url .= $_SERVER['HTTP_HOST'];
63
+ $redirect_url .= $_SERVER['REQUEST_URI'];
64
+ return $redirect_url;
65
+ }
66
+ }
readme.txt CHANGED
@@ -2,8 +2,8 @@
2
  Contributors: sakurainternet
3
  Tags: ssl
4
  Requires at least: 4.7.0
5
- Tested up to: 4.7.5
6
- Stable tag: 1.2
7
  License: GPLv2 or later
8
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
9
 
@@ -19,6 +19,7 @@ License URI: http://www.gnu.org/licenses/gpl-2.0.html
19
  ・.htaccessを書き換えて自動的にhttpsのURLへリダイレクトします。
20
  ・サイト内の投稿のURLをhttpからhttpsに置換します。
21
  ・サイト設定のサイトURLをhttpからhttpsに置換します。
 
22
  ※プラグインを停止すると上記設定は解除されます。
23
 
24
  SSL証明書の購入や設定はお客様で事前に必要となりますのでご注意ください。
@@ -49,7 +50,8 @@ SSL証明書の購入や設定はお客様で事前に必要となりますの
49
  = 1.2 =
50
  * WordPressがサブディレクトリにインストールされている場合に予約投稿に失敗するバグを修正
51
  ※このアップデートを適用するには、プラグインをアップデートした上で、プラグインの停止→有効化を行って再度プラグイン画面からSSL化を実行してください。
52
-
 
53
  == Upgrade Notice ==
54
 
55
  = 1.0 =
@@ -58,4 +60,5 @@ SSL証明書の購入や設定はお客様で事前に必要となりますの
58
  * パーマリンク設定されている場合に投稿ページがリダイレクトされない場合があるバグを修正
59
  = 1.2 =
60
  * WordPressがサブディレクトリにインストールされている場合に予約投稿に失敗するバグを修正
61
-
 
2
  Contributors: sakurainternet
3
  Tags: ssl
4
  Requires at least: 4.7.0
5
+ Tested up to: 4.9.0
6
+ Stable tag: 1.3.0
7
  License: GPLv2 or later
8
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
9
 
19
  ・.htaccessを書き換えて自動的にhttpsのURLへリダイレクトします。
20
  ・サイト内の投稿のURLをhttpからhttpsに置換します。
21
  ・サイト設定のサイトURLをhttpからhttpsに置換します。
22
+ ・www付きのドメインを利用している場合のリダイレクトループを防止します。
23
  ※プラグインを停止すると上記設定は解除されます。
24
 
25
  SSL証明書の購入や設定はお客様で事前に必要となりますのでご注意ください。
50
  = 1.2 =
51
  * WordPressがサブディレクトリにインストールされている場合に予約投稿に失敗するバグを修正
52
  ※このアップデートを適用するには、プラグインをアップデートした上で、プラグインの停止→有効化を行って再度プラグイン画面からSSL化を実行してください。
53
+ = 1.3 =
54
+ * example.com のドメイン設定で www.example.com のサイトを運営している場合に発生するリダイレクトループを防止する機能を追加しました。自動的に対応しますのでお客様側の設定変更は必要ありません。
55
  == Upgrade Notice ==
56
 
57
  = 1.0 =
60
  * パーマリンク設定されている場合に投稿ページがリダイレクトされない場合があるバグを修正
61
  = 1.2 =
62
  * WordPressがサブディレクトリにインストールされている場合に予約投稿に失敗するバグを修正
63
+ = 1.3 =
64
+ * 機能改善を実施
sakura-rs-ssl.php CHANGED
@@ -7,7 +7,7 @@
7
  * Plugin URI: https://help.sakura.ad.jp/hc/ja/articles/115000047641
8
  * Text Domain: sakura-rs-ssl
9
  * Domain Path: /languages
10
- * Version: 1.2
11
  *
12
  * @package Sakura_Ssl
13
  * License:
@@ -95,6 +95,9 @@ class Sakura_Ssl_Controller {
95
  register_deactivation_hook( __FILE__, array( $sakura, 'unforce_ssl' ) );
96
  $sakura->replace_link_hooks();
97
  $sakura->replace_options();
 
 
 
98
  }
99
 
100
  /**
7
  * Plugin URI: https://help.sakura.ad.jp/hc/ja/articles/115000047641
8
  * Text Domain: sakura-rs-ssl
9
  * Domain Path: /languages
10
+ * Version: 1.3.0
11
  *
12
  * @package Sakura_Ssl
13
  * License:
95
  register_deactivation_hook( __FILE__, array( $sakura, 'unforce_ssl' ) );
96
  $sakura->replace_link_hooks();
97
  $sakura->replace_options();
98
+
99
+ $fixture = Redirect_fixture_sakura::get_instance();
100
+ $fixture->init();
101
  }
102
 
103
  /**