SSL対応化 & WordPressサイトを常時SSL化するとリダイレクトループが発生する場合の対処方法

プラグイン「Really Simple SSL」により本サイトを常時SSL化したところ、リダイレクトが繰り返し行われ、エラー画面が表示る状態(リダイレクトループ)になってしまいました。解決方法の記録となります。

サーバー構成

  • さくらインターネットVPS
  • Apache/2.4.18
  • ジオトラスト SSL ラピッドSSL

症状

  • 常時SSL化でない場合(通常のhttpの場合)は正常に表示される。
  • WordPressと無関係のPHPやHTML、画像などは正常表示される。

どうやら、SSL + WordPress という環境でのみ発生する現象のようです。

原因

独自SSLがリバースプロキシを経由して構成されている事で、PHPの変数である$_SERVER変数$_ENV変数に影響がででるそうです。それによりWordPressがリクエストを正常に処理できなくなり、リダイレクトループが発生するようです。

色々と上記の原因を調査してる中で

さくらのレンタルサーバでHTTPS(SNI SSL)な独自ドメインのWordpressサイトを構築する際の注意点

このサイトのページと酷似していました。

解決方法

wp-config.php の最初で、$_SERVER変数と$_ENV変数に正しい値を投げ込む事で解決できます。

$_SERVER[‘HTTPS’] = ‘on’;
$_ENV[‘HTTPS’] = ‘on’;
$_SERVER[‘HTTP_HOST’] = ‘www.dowata.com’;
$_SERVER[‘SERVER_NAME’] = ‘www.dowata.com’;
$_ENV[‘HTTP_HOST’] = ‘www.dowata.com’;
$_ENV[‘SERVER_NAME’] = ‘www.dowata.com’;

常時SSLが有効になりめでたしめでたし。

WordPress記事投稿画面にオリジナル領域を入れるボタンを追加する

記事を投稿する際、オリジナルの領域を入れたい事はありませんか?
マークアップ言語にはH1、H2、H3のようなタイトルや題名で使われる要素は用意されています。

補足事項や注意事項、注意書きなどと言った特別に強調したい文章を入れたい場合、
文字の色を変える、大きさを変える、太文字にする、改行するなどと言った事しか出来ません。

右側にあるビジュアル、テキストをテキスト側に切り替えてHTML言語でマークアップして
デザインとなるCSSを近くに書いて~などは出来ますが、専門的な知識が必要なため、
全員ができる訳ではありません。

文字の色を変える、大きさを変える等といった操作と同じように、
マウス操作だけでデザインを変更できるようにします。

そのためにはfunctions.phpとstyle.cssにコードを書き込む必要があります。

functions.php

function original_markup_editor_setting($init_original_markup) {
//独自マークアップ追加
$style_formats = array(
array(
‘title’ => ‘補足情報’,
‘block’ => ‘div’,
‘classes’ => ‘point’,
‘wrapper’ => true
),
array (
‘title’ => ‘注意書き’,
‘block’ => ‘div’,
‘classes’ => ‘attention’,
‘wrapper’ => true
),
array (
‘title’ => ‘コード’,
‘block’ => ‘div’,
‘classes’ => ‘DOWATAcode’,
‘wrapper’ => true
)
);

$init_original_markup[‘style_formats’] = json_encode($style_formats);
return $init;
}
add_filter(‘tiny_mce_before_init’, ‘original_markup_editor_setting’);

//スタイルメニューを有効化
function add_stylemenu($buttons) {
array_splice($buttons, 1, 0, ‘styleselect’);
return $buttons;
}
add_filter(‘mce_buttons_2’, ‘add_stylemenu’);

WordPressの記事で使用しないH1要素を使えないようにする

投稿画面でH1要素を使えないようにする

WordPressの記事でH1要素は記事タイトルで使われる。article要素内にH1要素は1つとされています。本文中に複数のH1要素があるとSEO的に良くないとされています。投稿の編集画面で元から選択できないようにする事で選択ミス、ヒューマンエラーを起こさないようにします。

functions.phpに記述することで選択肢から削除することが出来ます。

function editor_setting($init) {
//使わないH1要素を外す
$init[‘block_formats’] = “見出し2=h2;見出し3=h3;見出し4=h4;見出し5=h5;段落=p;”;
return $init;
}
add_filter(‘tiny_mce_before_init’, ‘editor_setting’);

上記のコードでH1要素を選択肢から外すことが出来ます。

注意事項

選択肢を変数$initに格納してadd_filterで設定を投げ込むわけですが、

“”で囲った設定内容にスペースを入れると機能しなくなるようです。要素を選択しても無反応となり、私の場合マークアップできなくなりました。

イコールを見ると両側をスペースを入れたくなるのですが、今回は駄目なようです。

シェアボタンを設置しました

記事個別ページにシャボタンを設置

記事個別ページにSNSへのシェアボタンを設置しました。

  • Twitter
  • Facebook
  • Google+

の三種を利用できるようになっています。
PC、スマホ両対応しています。

様子を見て他サイトへのシェアボタンを追加していく予定です。

Ubuntu16.04でApache2のバーチャルホスト設定

複数ドメインで利用するバーチャルホストを使えるようにする

動作環境

  • Ubuntu16.04LTS
  • Apache2

1つのWEBサーバーでバーチャルホストを設定し、複数のドメイン名を利用できるようにします。
HTTPサーバApache2のvirtual.host用設定ファイル新規作成する。

# vi /etc/apache2/sites-available/virtual.host.conf

<VirtualHost *:80>
ServerName dowata.com
ServerAdmin webmaster@dowata.com
DocumentRoot /home/dowata/public_html
ErrorLog /var/log/apache2/dowata.com.error.log
CustomLog /var/log/apache2/dowata.com.access.log combined
LogLevel warn
</VirtualHost>
<VirtualHost *:80>
ServerName www.dowata.com
ServerAdmin webmaster@dowata.com
DocumentRoot /home/dowata/public_html
ErrorLog /var/log/apache2/dowata.com.error.log
CustomLog /var/log/apache2/dowata.com.access.log combined
LogLevel warn
</VirtualHost>

# a2ensite virtual.host
Enabling site virtual.host.
To activate the new configuration, you need to run:
service apache2 reload

サービスのリスタートを要求されたのでリスタートさせる。

# systemctl restart apache2