.htaccess の書き方・細かく説明【Rewrite・cache・DEFLATE】   new


「.htaccess」の記述について細かい説明

「.htaccess」というファイルを設置すると、リダイレクトやアクセス制限などの設定ができます。無料のレンタルサーバーでは「.htaccess」を利用できない場合もあります。「.htaccess」はフェイルテキストです。メモ帳で編集できます。

htaccess
htaccess
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

ブログの表示速度を上げるために使うプラグイン「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クエリ(要求)文字列
facebookexternalhitfacebookのクローラー

除外 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]

ルール 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
DOCUMENT_ROOTドキュメントルート
^入力文字列の先頭と一致
*直前の文字を0回以上連続する
$1部分置換

FilesMatch

<FilesMatch “index\.(html|htm)$”>

  • index.himlとindex.htmを設定する。

charset

charsetは文字コードを指定します。

mod_headers

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 圧縮の設定

Gzipはデータ圧縮プログラムです。

mod_deflate

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

キャッシュをMIME Type 毎に設定

  • ExpiresActive On
  • ExpiresDefault A0
  • ExpiresByType image/gif A2592000
  • ExpiresByType image/png A2592000

MIME Typeの記述の例

MIME Type は拡張子と違い、コンテンツの形式を区別する識別子です。

HTML文text/html
テキストtext/plain
jpeg画像image/jpeg


About ゆきを

ジャンルに拘らずに、好きなことを書いてます。 趣味であったり、覚書きであったりします。 むずかしい言葉を使わず、流行りの言葉を使わないように書いてます。