はい、今日はWordPressを始めるための手順と気をつけるべきポイントまとめの続きです。
ある程度サイト運営をしていれば、サーバーの設定項目の中に、「.htaccess」という文字を見つけたことがあると思います。 実はこれはWordPress向けのファイルではなくて、Appacheというサーバーソフトが使用する設定ファイルとなっています。
あまり慣れていないと、このファイルには手をださない人が多いのですが、これを上手く設定するとWordPressの基礎的な能力を高められるので、可能な限り設定することをオススメします。
なお、エックスサーバーのwpXSpeedはNginxという別のサーバーソフトを使っていますが、この設定は有効です。 また、この編集操作はFTPソフトからのアップロードだけでなく、レンタルサーバーのホームページ上から直接できる場合も多くなっているので、自分のレンタルサーバーはどうなっているかチェックしてみてください。
.htaccessでできる4つのこと
念の為.htaccessで設定できる主要な機能を紹介します。
- アクセス制限
- リダイレクト
- キャッシュ制御
- Gzip 圧縮
大きく分けるとこの4つに分けられると思います。 高速化に関係するのは3と4ですね。 とはいえ.htaccessではセキュリティも向上できるので、今回はそれも含めて、僕が考える必要な設定箇所だけをピックアップして掲載しています。
ただし実際に編集に入る前に絶対に注意してほしいことがあります。 このページで挙げている設定例については問題ありませんが、このファイルは設定を間違えてしまうとWordPressへのアクセスができなくなってしまうことが十分に有り得るファイルです。 そのため編集の前にはしっかりとコピーをとって、いつでも元に戻せるようにしておくことをオススメします。
アクセス制限でセキュリティを高めよう
wp-config.phpへのアクセスを禁止にしよう
wp-config.phpというファイルはWordPressの最重要ファイルです。 このファイルにはデータベースのパスワード等が書かれているため、外部からアクセスされないようにしておく必要があります。
<files wp-config.php>
order allow,deny
deny from all
</files>
XML-RPCを無効にしよう
WordPressにはXML-RPCという外部からWordPressを操作するための仕組みが標準で備わっているんですが、ハッキリ言って使いません。 使わないのにこれが使える状態になっていると、セキュリティ上マズいので、無効にしておきます。
もしXML-RPCを理解していて、明確に使うと決まっている場合にはここはスルーしてください。
<Files xmlrpc.php>
Order Deny,Allow
Deny from all
</Files>
wp-comments-post.phpへのアクセスを禁止にしよう
コメント機能を使ってない方は無効にしておきましょう。 スパム対策です。
<Files wp-comments-post.php>
order allow,deny
deny from all
</Files>
キャッシュとGzipでWordPressを高速化しよう
Keep-Aliveを有効にしよう
ブラウザでWEBページにアクセスすると、HTMLに記述されている全てのファイルのダウンロードが発生します。
このKeep-Aliveが無効である場合、そのファイル毎に新たにコネクションを確立させるため、必要なファイルが多いページではその分だけ遅くなってしまいます。
しかし、これを有効にしておけば一度の接続で全てのファイルを取得できるようになります。 これは必ず有効にしておきましょう。
<IfModule mod_headers.c>
Header set Connection keep-alive
</IfModule>
Etagは無効化しよう
便利なEtagですが、Etagにはデメリットもあってややこしいため、基本的にはOFFでいいです。
<ifModule mod_headers.c>
Header unset ETag
</ifModule>
FileETag None
MimeTypeの設定でキャッシュ対象を追加しておく
フォントやアイコンについては、事前に明示しておかなければキャッシュされません。
<IfModule mime_module>
AddType text/cache-manifest .appcache
AddType image/x-icon .ico
AddType image/svg+xml .svg
AddType application/x-font-ttf .ttf
AddType application/x-font-woff .woff
AddType application/x-font-woff2 .woff2
AddType application/x-font-opentype .otf
AddType application/vnd.ms-fontobject .eot
</IfModule>
Cache-Controlでサーバーサイドのキャッシュを設定しよう
プロクシサーバなどで適切にキャッシュ管理ができるようにする設定です。
<IfModule mod_headers.c>
# 画像とフォントを対象
<FilesMatch "\.(ico|jpe?g|png|gif|svg|swf|pdf|ttf|woff|woff2|otf|eot)$">
# publicで期間は7日
Header set Cache-Control "max-age=604800, public"
</FilesMatch>
# プロキシサーバーが間違ったコンテンツを配布しないようにする
Header append Vary Accept-Encoding env=!dont-vary
</IfModule>
Expiresでクライアントサイドのキャッシュを設定しよう
ここでのキャッシュはユーザー側のブラウザに関する設定です。 2回目以降のアクセスで無駄な通信をしないですむようになるため、その分だけアクセスが速く完了します。
各設定期間については僕の使っている設定値なので、自由に変更してもらって構いません。
<ifModule mod_expires.c>
ExpiresActive On
ExpiresDefault "access plus 1 seconds"
ExpiresByType text/html "access plus 30 minutes"
ExpiresByType text/css "access plus 1 weeks"
ExpiresByType text/js "access plus 1 weeks"
ExpiresByType text/javascript "access plus 1 weeks"
ExpiresByType image/gif "access plus 1 weeks"
ExpiresByType image/jpeg "access plus 1 weeks"
ExpiresByType image/png "access plus 1 weeks"
ExpiresByType image/svg+xml "access plus 1 weeksr"
ExpiresByType image/webp "access plus 1 weeks"
ExpiresByType image/x-icon "access plus 1 weeks"
ExpiresByType application/pdf "access plus 1 weeks"
ExpiresByType application/javascript "access plus 1 weeks"
ExpiresByType application/x-javascript "access plus 1 weeks"
ExpiresByType font/woff "access plus 1 year"
ExpiresByType application/font-woff "access plus 1 year"
ExpiresByType application/font-woff2 "access plus 1 year"
ExpiresByType application/x-font-woff "access plus 1 year"
ExpiresByType application/x-font-ttf "access plus 1 year"
ExpiresByType application/x-font-opentype "access plus 1 year"
ExpiresByType application/vnd.ms-fontobject "access plus 1 year"
</IfModule>
Gzip圧縮を設定しよう
最後にgzipの設定です。 これを設定すると転送されるデータそのものが圧縮されて小さくなります。
# Gzip圧縮の設定
<IfModule mod_deflate.c>
SetOutputFilter DEFLATE
BrowserMatch ^Mozilla/4\.0[678] no-gzip
BrowserMatch ^Mozilla/4 gzip-only-text/html
BrowserMatch \bMSI[E] !no-gzip !gzip-only-text/html
SetEnvIfNoCase Request_URI \.(?:gif|jpe?g|png|ico)$ no-gzip dont-vary
SetEnvIfNoCase Request_URI _\.utxt$ no-gzip
Header append Vary Accept-Encoding env=!dont-vary
AddOutputFilterByType DEFLATE text/plain
AddOutputFilterByType DEFLATE text/html
AddOutputFilterByType DEFLATE text/xml
AddOutputFilterByType DEFLATE text/css
AddOutputFilterByType DEFLATE text/js
AddOutputFilterByType DEFLATE image/svg+xml
AddOutputFilterByType DEFLATE application/xml
AddOutputFilterByType DEFLATE application/xhtml+xml
AddOutputFilterByType DEFLATE application/rss+xml
AddOutputFilterByType DEFLATE application/atom_xml
AddOutputFilterByType DEFLATE application/javascript
AddOutputFilterByType DEFLATE application/x-javascript
AddOutputFilterByType DEFLATE application/x-httpd-php
AddOutputFilterByType DEFLATE application/x-font-ttf
AddOutputFilterByType DEFLATE application/x-font-woff
AddOutputFilterByType DEFLATE application/x-font-opentype
AddOutputFilterByType DEFLATE application/vnd.ms-fontobject
</IfModule>
まとめ
一般的な個人ブログにおいてはここまでやれば十分です。
さて次回ですが、次回でいよいよ最終となります。 今回はサーバー側の設定でしたが、次はWordPress側の詰めの設定になります。
以上、今日はこれにて!