.htaccess とは?の書き方・細かく説明【Rewrite・cache・DEFLATE】
「.htaccess」の記述について細かい説明/.htaccess とは?
「.htaccess」というファイルを設置すると、リダイレクトやアクセス制限などの設定ができます。無料のレンタルサーバーでは「.htaccess」を利用できない場合もあります。「.htaccess」はフェイルテキストです。テキストエディタで編集します。
Rewrite | リダイレクトする |
cache | キャッシュの有効・無効 |
DEFLATE | 圧縮を有効にする |


ひとつずつその記述について見てみます。
.htaccess の記述内容/.htaccess とは?
- # BEGIN WordPress <IfModule mod_rewrite.c>
- RewriteEngine On
- RewriteBase /
- RewriteRule ^index\.php$ - [L]
- RewriteCond %{REQUEST_FILENAME} !-f
- RewriteCond %{REQUEST_FILENAME} !-d
- RewriteRule . /index.php [L] </IfModule> # END WordPress
リダイレクト機能 mod_rewrite
<IfModule mod_rewrite.c>~</IfModule>
「mod_rewrite」は世界で一番に使われているApacheというhttpサーバで利用できる機能で、URLを正規表現に書き換え・リダイレクトを行います。
<IfModule mod_rewrite.c>は、この機能(モジュール)が利用できるならば、<IfModule >~</IfModule>内を実行できますという記述です。
リダイレクトオン RewriteEngine On
書き換え、リダイレクトの処理の機能をオンにするかオフにするかの記述です。
- RewriteEngine Off で無効
リダイレクト先のベース RewriteBase /
リダイレクト先のベースとなるパスを記述します。「RewriteBase /」と記載すると、ドキュメントルートに設定したディレクトリーがベースとなります。
リダイレクトルール RewriteRule ^index\.php$ – [L]
^ | 入力文字列の先頭と一致 |
$ | 入力文字列の末尾と一致 |
. | 任意の一文字 |
バックスラッシュ | 特殊文字を打ち消す場合は特殊文字の直前にバックスラッシュを記述する |
L | 最後 |
「バックスラッシュ」により「.」は任意の文字ではなく、「.php」です。
Lは無限ループの防止であり、このルールが適応されたら、それが最後ですという意味です。
- 「index.php」でRewriteRuleは終わり
RewriteCond と RewriteRule の関係
RewriteCondやRewriteRuleは、mod_rewriteの構文です。
- RewriteCond は条件を指定
- RewriteRule は実行するルールを指定
RewriteCondの条件が満たされれば、RewriteRuleに記述したことが実行されます。
- 条件が満たされれば、書き換えが行われる
条件 RewriteCond
RewriteCondで、書き換えのルールの条件を指定します。
- RewriteCond %{REQUEST_FILENAME} !-f
- RewriteCond %{REQUEST_FILENAME} !-d
- Rewriteの条件は、REQUEST_FILENAMEがファイルでなく、ディレクトリでもない時。
REQUEST_FILENAME
リクエストされたファイルまたはローカルファイルのパス。
!-f !-d
! | !は文字列の前に付けることで、文字列を否定する |
!-f | ファイル以外 |
!-d | ディレクトリー以外 |
ルール RewriteRule . /index.php [L]
RewriteRuleで書き換え・リダイレクトのルールを指定します。
- 「.」を「/index.php」に書き換えます。
- 「/index.php」に書き換えると、ルールは終了[L]です。
キャッシュ wp fastest cache /.htaccess とは?
ブログの表示速度を上げるために使うプラグイン「wp fastest cache」はキャッシュファイルを使って表示するように、「.htaccess」を設定します。
- # BEGIN WpFastestCache
- <IfModule mod_rewrite.c>
- RewriteEngine On
- RewriteBase /
- RewriteCond %{HTTPS} =on
- RewriteCond %{HTTP_HOST} ^example.com # Start_WPFC_Exclude_Admin_Cookie
- RewriteCond %{HTTP:Cookie} !wordpress_logged_in_[^\=]+\=・・・・ # End_WPFC_Exclude_Admin_Cookie
条件 RewriteCond %{HTTPS} =on
RewriteCondで条件で条件を指定します。
- HTTPSの場合。
HTTP_HOST | サーバーのホスト名 |
HTTP:Cookie | クッキー情報 |
除外 # Start_WPFC_Exclude_Admin_Cookie
管理画面のクッキーを除外します。
除外「!」
- RewriteCond %{HTTP_HOST} ^example.com
- RewriteCond %{HTTP_USER_AGENT} !(facebookexternalhit・・・ RewriteCond %{REQUEST_METHOD} !POST RewriteCond %{REQUEST_URI} !(\/){2}$
- RewriteCond %{QUERY_STRING} !.+
↓
HTTP_USER_AGENT | ユーザーエージェント |
REQUEST_METHOD | リクエスト方法 |
REQUEST_URI | リクエストURL |
QUERY_STRING | クエリ(要求)文字列 |
facebookexternalhit | facebookのクローラー |
除外 RewriteCond %{REQUEST_URI} !
\ | 特殊文字を打ち消す場合は特殊文字の直前に\を記述する |
{2} | {の前の文字を2回繰り返す |
+ | 前の文字が1つ以上連続する |
除外 RewriteCond %{QUERY_STRING} !.+
クリエ文字列が、「.」の場合除外。
条件(RewriteCond)
- RewriteCond %{DOCUMENT_ROOT}/・・/cache/all/$1/index.html -f [or]
- RewriteCond /home/・・/example.com/・・/cache/all/$1/index.html -f RewriteRule ^(.*) "/・・/cache/all/$1/index.html" [L]
DOCUMENT_ROOT | ドキュメントルート |
^ | 入力文字列の先頭と一致 |
* | 直前の文字を0回以上連続する |
$1 | 部分置換 |
ルール RewriteRule ^(.*) “/・・/cache/all/$1/index.html” [L]
$1 部分置換
・・/cache/call/$1/index.htmlの$1の部分を置換する
- ・・/cache/call/hoge1/index.html
- ・・/cache/call/hoge2/index.html
- ・・/cache/call/hoge3/index.html
FilesMatch と charset/ .htaccessとは?
<FilesMatch "index\.(html|htm)$"> | index.himlとindex.htmを設定 |
charset | 文字コードを指定 |
mod/ .htaccessとは?
mod headers はヘッダーをカスタマイズする機能です。
- <ifModule mod_headers.c>
- FileETag None Header unset ETag
- Header set Cache-Control "max-age=0, no-cache, no-store, must-revalidate"
- Header set Pragma "no-cache"
- Header set Expires "Mon, 29 Oct 1923 20:30:00 GMT"
- </ifModule>
- </FilesMatch>
FileETag None Header unset ETag
ETagを使わない。
Cache-Control
キャッシュ機能に関する指定。
Expires | キャッシュの有効期限(日時で指定) |
max-age= | キャッシュの有効期限(秒数で指定) |
no-store | キャッシュに記憶させない |
no-cache | キャッシュが現在も有効か確認なしでキャッシュを利用しない |
must-revalidate | キャッシュが現在も有効かWebサーバに確認する |
Gzip 圧縮の設定 /.htaccessとは?
Gzipはデータ圧縮プログラムです。
mod_deflate /.htaccessとは?
mod deflate はファイルを圧縮し、転送量を減らし高速化を図ります。
AddType x-font
フォントの拡張子を追加します。「AddType」で記述します。
- <IfModule mod_deflate.c>
- AddType x-font/woff .woff
- AddType x-font/ttf .ttf
OutputFilter
DEFLATE はデータを圧縮するアルゴリズムです。OutputFilter は、サーバーから出力する時に圧縮するコンテンツをフィルターにかけます。
- #フィルタをかける
- AddOutputFilterByType DEFLATE image/svg+xml
- AddOutputFilterByType DEFLATE text/plain
- AddOutputFilterByType DEFLATE text/html
- AddOutputFilterByType DEFLATE text/xml
- AddOutputFilterByType DEFLATE text/css
- AddOutputFilterByType DEFLATE text/javascrip #フォントの設定
- AddOutputFilterByType
- DEFLATE font/opentype font/ttf font/eot font/otf </IfModule> # END GzipWpFastestCache
参照:https://codex.wordpress.org/Output_Compression
キャッシュの期限 mod_expires / .htaccess とは?
キャッシュをMIME Type 毎に設定
- ExpiresActive On
- ExpiresDefault A0
- ExpiresByType image/gif A2592000
- ExpiresByType image/png A2592000
MIME Typeの記述の例 /.htaccess とは?
MIME Type は拡張子と違い、コンテンツの形式を区別する識別子です。
HTML文 | text/html |
テキスト | text/plain |
jpeg画像 | image/jpeg |