ブログやウェブサイトですぐに役立つ「.htaccess」の設定のまとめ
Post on:2012年1月25日
ブログやウェブサイトのパフォーマンス改善や運営・セキュリティに役立つ「.htaccess」の設定を紹介します。
.htaccess Files for the Rest of Us
[ad#ad-2]
下記は各ポイントを意訳したものです。
リダイレクトとリライト
リダイレクト
サイトを移転したなど、永続的なリダイレクトには「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 ^(.*)$ //coliss.com/\ [L,R=301]
オリジナルのエラーページ
エラー時(404)に表示するページを設定します。
例:エラーページを/404.htmlに設定
ErrorDocument 404 "/404.html"
[ad#ad-2]
特定のリソースへのアクセス制限
特定のディレクトリのアクセスをパスワードで制限します。
パスワードは「.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
sponsors