ブログやウェブサイトですぐに役立つ「.htaccess」の設定のまとめ

ブログやウェブサイトのパフォーマンス改善や運営・セキュリティに役立つ「.htaccess」の設定を紹介します。

サイトのキャプチャ

.htaccess Files for the Rest of Us

下記は各ポイントを意訳したものです。

リダイレクトとリライト

リダイレクト

サイトを移転したなど、永続的なリダイレクトには「HTTP301リダイレクト」で設定します。
転送先のURLは絶対URLで指定します。

Redirect 301 ^old\.html$ http://ドメイン/new.html

リライト

リライト(書き換え)をする場合は、下記のようになります。

RewriteEngine on
RewriteRule ^old\.html$ new.html

オプションに「R=301」をつけると永続的なリダイレクトします。
※一時的なリダイレクト(302)は「R=302」にします。

RewriteRule ^old\.html$ http://ドメイン/new.html [R=301]

www付きを無しにする場合は、下記のようになります。
例:www.coliss.comをcoliss.comに

RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} ^www.coliss.com [NC]
RewriteRule ^(.*)$ http://coliss.com/$1 [L,R=301]

オリジナルのエラーページ

エラー時(404)に表示するページを設定します。
例:エラーページを/404.htmlに設定

ErrorDocument 404 "/404.html"

特定のリソースへのアクセス制限

特定のディレクトリのアクセスをパスワードで制限します。
パスワードは「.htpasswd」で設定します。
「Username and password required」はパスワード入力時に表示されるメッセージです。

AuthName "Username and password required";
AuthUserFile /path/to/.htpasswd
Require valid-user
AuthType Basic

特定のファイルのみ制限する場合は、下記のようになります。
例:protectedfile.htmlのみ制限

<Files "protectedfile.html">
AuthName "Username and password required";
AuthUserFile /path/to/.htpasswd
Require valid-user
AuthType Basic
</Files>

特定のIPのアクセス阻止

指定したIPからのアクセスを阻止します。
例:192.168.0.1のアクセスを制限

order allow,deny
deny from 192.168.0.1
allow from all

IEのレンダリングモードの設定

IEの互換モードを排除します。

Header set X-UA-Compatible "IE=Edge"

これを必要としないファイル(JSファイルや画像など)に置くことを避けるには、下記のようにします。

<FilesMatch ";\.(js|css|gif|png|jpe?g|pdf|xml|oga|ogg|m4a|ogv|mp4|m4v|webm|svg|svgz|eot|ttf|otf|woff|ico|webp|appcache|manifest|htc|crx|xpi|safariextz|vcf)$">
  Header unset X-UA-Compatible
</FilesMatch>

有効期限を設定してトラフィックを軽減

リソースの有効期限を設定することで、ブラウザのリクエストで変更されていないリソースを求めるのを阻止し、キャッシュを有効活用しトラフィックの軽減に繋がります。
下記は、画像や動画・音声ファイルの有効期限を1ヵ月に設定したものです。

ExpiresActive on
ExpiresByType image/gif                 "access plus 1 month"
ExpiresByType image/png                 "access plus 1 month"
ExpiresByType image/jpg                 "access plus 1 month"
ExpiresByType image/jpeg                "access plus 1 month"
ExpiresByType video/ogg                 "access plus 1 month"
ExpiresByType audio/ogg                 "access plus 1 month"
ExpiresByType video/mp4                 "access plus 1 month"
ExpiresByType video/webm                "access plus 1 month"

gzip圧縮の利用

これはApache2.1+の機能でDEFLATE圧縮アルゴリズムを使い、指定したファイルを圧縮します。
下記は、テキスト、HTML、JS、CSSファイルをgzip圧縮して使用します。

FilterDeclare Comp CONTENT_SET
FilterProvider Comp DEFLATE resp=Content-Type $text/plain
FilterProvider Comp DEFLATE resp=Content-Type $text/html
FilterProvider Comp DEFLATE resp=Content-Type $application/javascript
FilterProvider Comp DEFLATE resp=Conten-Type $text/css
FilterChain Comp

それより古いバージョンでは、mod_deflateモジュールを利用します。

SetOutputFilter DEFLATE
AddOutputFilterByType DEFLATE text/html text/css text/javascript

top of page

©2017 coliss