WordPress4.9.8リリース

2018/08/02にWordPress4.9.8がリリースされました。46個のバグ修正や更新があったようです。

Try Gutenberg

ダッシュボードにGutenberg の使用を勧めるどでかい通知(コールアウトと呼ぶらしい)が表示されるようになりました。

やっとと言うべきか、ついにと言うべきか、Gutenberg が本格始動する WordPress5.0 まで、もうまもなくというところのようです。

プライバシーに関する修正

4.9.6で追加されたGDPR関連のプライバシーページや個人用データツールなどの修正が多く、46個のうち18個がそれ関係みたいです。

他にもregister_meta()register_meta()がオブジェクトサブタイプに対応したり、Twenty Seventeen に微修正があったりするようですが、ここで詳しく説明するのはやめておきましょう。なぜなら英語が苦手だからです。興味のある方は下のリンクから各自読んでみてください。(そしてできたら教えてください…)

それにしても Gutenberg がもう間近に迫ってます! 実を言うとまだ Gutenberg について知らないことだらけ(というか全然知らない)なのでそろそろ本気で勉強しないと…

参考リンク

WordPress 4.9.8
https://wordpress.org/news/2018/08/wordpress-4-9-8-maintenance-release/

“Try Gutenberg” Callout in WordPress 4.9.8
https://make.wordpress.org/core/2018/08/02/try-gutenberg-callout-in-wordpress-4-9-8/

Registering Metadata in 4.9.8
https://make.wordpress.org/core/2018/07/27/registering-metadata-in-4-9-8/

.htaccessによるIPアドレスでのアクセス制御

Apache2.4以前まではDenyDenyAllowAllowといったディレクティブを使用していましたが、Apache2.4以降それらは非推奨となり、代わりにRequireRequireディレクティブを使用するよう変更されました。

全てのアクセスを拒否

Require all denied
  1. Require all denied
Require all denied

特定のIPアドレスからのアクセスのみ許可

Require ip 192.168.0.1
  1. Require ip 192.168.0.1
Require ip 192.168.0.1

複数指定

Require ip 192.168.0.1 192.168.0.2
  1. Require ip 192.168.0.1 192.168.0.2
Require ip 192.168.0.1 192.168.0.2

前方一致での指定

Require ip 192.168
  1. Require ip 192.168
Require ip 192.168

ネットワーク指定

Require ip 192.168.0.0/255.255.0.0
  1. Require ip 192.168.0.0/255.255.0.0
Require ip 192.168.0.0/255.255.0.0

CIDRでのネットワーク指定

Require ip 192.168.0.0/16
  1. Require ip 192.168.0.0/16
Require ip 192.168.0.0/16

参考URL

mod_authz_host のドキュメント
https://httpd.apache.org/docs/2.4/mod/mod_authz_host.html

.htaccessによるHTTPSへのリダイレクト

.htaccess を使用して、http://***.com へのアクセスを https://***.com へリダイレクトします。

RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
  1. RewriteEngine On
  2. RewriteCond %{HTTPS} off
  3. RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

リダイレクトにはmod_rewriteモジュールを使用します。

簡単な解説

mod_rewriteモジュールはルールベースの書き換えエンジンであり、まずリクエストされたURLを見て、ルールに従ってURLを書き換え、そして必要であれば書き換え後のURLへリダイレクトを促すという仕組みになっています。

RewriteEngine

そのためまず1行目で書き換えエンジンを有効化しています。デフォルトはOffOffなので、必ず必要になります。

RewriteEngine On
  1. RewriteEngine On
RewriteEngine On

RewriteCond

2,3行目で書き換えのルールを記述しています。RewriteCondRewriteCondはどのURLを書き換えるかという条件を示す部分です。今回のケースでは「httpアクセスの場合」という条件であるため、以下のように記述しています。

RewriteCond %{HTTPS} off
  1. RewriteCond %{HTTPS} off
RewriteCond %{HTTPS} off

.htaccess では多くの変数を使えます。上の%{HTTPS}%{HTTPS}もその一つです。%{HTTPS}%{HTTPS}にはリクエストがhttpsの場合はon、それ以外の場合はoffが格納されています。

RewriteCond の構文は以下のようになっており、

RewriteCond TestString CondPattern
  1. RewriteCond TestString CondPattern
RewriteCond TestString CondPattern

TestStringTestStringCondPatternCondPatternと一致するURLのみが、次のRewriteRuleRewriteRuleにて書き換えられます。CondPatternCondPatternは、今回は単純な文字列ですが、正規表現を使用することもできます。

RewriteRule

RewriteRuleRewriteRuleは、どのように書き換えるかを示す部分です。今回は「URLのスキームをhttpsに書き換える」というルールなので、以下のように記述します。

RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
  1. RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

構文は以下のようになっており、

RewriteRule Pattern Substitution [flags]
  1. RewriteRule Pattern Substitution [flags]
RewriteRule Pattern Substitution [flags]

基本的に正規表現を使って書き換えを行います。

今回はシンプルに、URL全体をhttps://%{HTTP_HOST}%{REQUEST_URI}https://%{HTTP_HOST}%{REQUEST_URI}に変換するようなルールになっています。%{HTTP_HOST}%{HTTP_HOST}にはHTTPリクエストのHOSTヘッダの値、%{REQUEST_URI}%{REQUEST_URI}にはリクエストのパスが入っています。

フラグには[R=301,L][R=301,L]を指定しています。まずR=301R=301では、クライアントに対しリダイレクトを促し、その際のHTTPステータスコードを301にすることを記述しています。リダイレクトに使用されるステータスコードはいくつかありますが、恒久的な移動を示す301で良いと思われます。

もう一つのフラグLLでは、このルール以降の書き換えルールは適用しないということを示します。今回のケースではこれ以降にルールはないため省略可能ですが、今後の追加などで他の設定とかち合う可能性もあるので書いておいてデメリットはないでしょう。

補足

この書き換えルールではURLの?以降にあるクエリ文字列も消えてしまうように見えますが、mod_rewriteでは特に指定がない限りクエリ文字列はそのまま残すようになっています。そのため、http://***.com?name=taro は https://***.com?name=taro のように、クエリ文字列の情報を残したまま、httpsに変換されます。

参考URL

mod_rewrite のドキュメント
https://httpd.apache.org/docs/current/mod/mod_rewrite.html

.htaccess で使用できる変数一覧
https://httpd.apache.org/docs/current/expr.html