ウェブサイトのパフォーマンス改善やセキュリティに役立つ.htaccessの設定
Post on:2010年11月8日
ウェブサイトのパフォーマンスの改善やSEO、セキュリティに役立つ.htaccessの設定を紹介します。
17 Useful Htaccess Tricks and Tips
備考:Apache チュートリアル: .htaccess ファイル、Apache コア機能
[ad#ad-2]
.htaccessの設定:パフォーマンスやSEO関連
.htaccessでタイムゾーンを設定
.htaccessでタイムゾーンを設定します。
例:東京
SetEnv TZ JST-9
もしくは、
SetEnv TZ Asia/Tokyo
.htaccessで301リダイレクトを設定
.htaccessで301リダイレクト(永続的なリダイレクト)を設定します。
例:旧ファイル(old.html)、新ファイル(new.html)
Redirect 301 //coliss.com/old.html //coliss.com/new.html
.htaccessでダウンロード時のダイアログを省略する
ダウンロード時に表示されるダイアログを省略します。
例:.pdf, .zip, .mov
AddType application/octet-stream .pdf AddType application/octet-stream .zip AddType application/octet-stream .mov
.htaccessでwww.付きをwww.無しにリダイレクト
www.付きをwww.無しに301リダイレクトします。
例:www.coliss.com → coliss.com
RewriteEngine On RewriteBase / RewriteCond %{HTTP_HOST} ^www.coliss.com [NC] RewriteRule ^(.*)$ //coliss.com/\ [L,R=301]
.htaccessでエラーページをカスタマイズ
エラーページに任意のページを指定します。
例:401, 403, 404, 500エラー時
ErrorDocument 401 /error/401.html ErrorDocument 403 /error/403.html ErrorDocument 404 /error/404.html ErrorDocument 500 /error/500.html
.htaccessでファイルを圧縮
HTML, JavaScript, CSSファイルなどを圧縮して、データを軽減してローディング時間を最適化します。
例:text, html, xml, css, javascript
# compress text, html, javascript, css, xml: AddOutputFilterByType DEFLATE text/plain AddOutputFilterByType DEFLATE text/html AddOutputFilterByType DEFLATE text/xml AddOutputFilterByType DEFLATE text/css AddOutputFilterByType DEFLATE application/xml AddOutputFilterByType DEFLATE application/xhtml+xml AddOutputFilterByType DEFLATE application/rss+xml AddOutputFilterByType DEFLATE application/javascript AddOutputFilterByType DEFLATE application/x-javascript
.htaccessでキャッシュの有効期限を設定
キャッシュの有効期限を設定します。
例:flv, gif, jpeg, jpg, png, ico, swf, js, css, pdf
<FilesMatch ".(flv|gif|jpe?g|png|ico|swf|js|css|pdf)$"> Header set Cache-Control "max-age=2592000" </FilesMatch>
.htaccessでキャッシュの制御
キャッシュを制御します。
例:pl, php, cgi, spl, scgi, fcgi
# explicitly disable caching for scripts and other dynamic files <FilesMatch ".(pl|php|cgi|spl|scgi|fcgi)$"> Header unset Cache-Control </FilesMatch>
[ad#ad-2]
.htaccessの設定:セキュリティ関連
.htaccessで自ファイルの別サイト無断使用をブロック
画像などのファイルが別サイトで無断使用(Hotlinking)されているのを防止します。
例:gif, jpeg, jpg, swf, flv, png
RewriteBase / RewriteCond %{HTTP_REFERER} !^$ RewriteCond %{HTTP_REFERER} !^http://(www.)?coliss.com/.*$ [NC] RewriteRule .(gif|jpe?g|swf|flv|png)$ /feed/ [R=302,L]
.htaccessでハッキングをブロック
セキュリティレベルを上げて、自サイトへのハッキングを防止します。
RewriteEngine On # proc/self/environ? no way! RewriteCond %{QUERY_STRING} proc/self/environ [OR] # Block out any script trying to set a mosConfig value through the URL RewriteCond %{QUERY_STRING} mosConfig_[a-zA-Z_]{1,21}(=|\%3D) [OR] # Block out any script trying to base64_encode crap to send via URL RewriteCond %{QUERY_STRING} base64_encode.*(.*) [OR] # Block out any script that includes a <script> tag in URL RewriteCond %{QUERY_STRING} (<|%3C).*script.*(>|%3E) [NC,OR] # Block out any script trying to set a PHP GLOBALS variable via URL RewriteCond %{QUERY_STRING} GLOBALS(=|[|\%[0-9A-Z]{0,2}) [OR] # Block out any script trying to modify a _REQUEST variable via URL RewriteCond %{QUERY_STRING} _REQUEST(=|[|\%[0-9A-Z]{0,2}) # Send all blocked request to homepage with 403 Forbidden error! RewriteRule ^(.*)$ index.php [F,L]
.htaccessファイルのアクセスをブロック
任意のユーザーが.htaccessファイルにアクセスすることを防止します。
# secure htaccess file <Files .htaccess> order allow,deny deny from all </Files> # prevent viewing of a specific file <Files secretfile.jpg> order allow,deny deny from all </Files> # multiple file types <FilesMatch ".(htaccess|htpasswd|ini|phps|fla|psd|log|sh)$"> Order Allow,Deny Deny from all </FilesMatch>
.htaccessファイルの名前を変更
.htaccessファイルのアクセスを防止するのと同様に、.htaccessファイルの名前を変更します。
例:htacc.ess
AccessFileName htacc.ess
.htaccessでディレクトリの表示を停止
ディレクトリにindex.htmlなど表示するべきファイルが無い場合でもディレクトリのファイル一覧が表示されないようにします。
# disable directory browsing Options All -Indexes
ディレクトリの表示を許可する場合は、下記のようになります。
# enable directory browsing Options All +Indexes
.htaccessでデフォルトで表示するページを設定
index.html, index.phpなどデフォルトで表示する際のページを設定します。
例:business.html
DirectoryIndex business.html
.htaccessで指定ドメインのアクセスをブロック
ドメインごとにアクセスを防止します。
例:scumbag.com, wormhole.com
# block visitors referred from indicated domains <IfModule mod_rewrite.c> RewriteEngine on RewriteCond %{HTTP_REFERER} scumbag.com [NC,OR] RewriteCond %{HTTP_REFERER} wormhole.com [NC,OR] RewriteRule .* - [F] </ifModule>
.htaccessでUAごとのリクエストをブロック
特定のロボットやスパイダーなどのリクエストをブロックすることで、帯域を救います。
# block visitors referred from indicated domains <IfModule mod_rewrite.c> SetEnvIfNoCase ^User-Agent$ .*(craftbot|download|extract|stripper|sucker|ninja|clshttp|webspider|leacher|collector|grabber|webpictures) HTTP_SAFE_BADBOT SetEnvIfNoCase ^User-Agent$ .*(libwww-perl|aesop_com_spiderman) HTTP_SAFE_BADBOT Deny from env=HTTP_SAFE_BADBOT </ifModule>
.htaccessでスクリプトの実行を停止
指定した拡張子のスクリプトの実行を停止します。
例:php, pl, py, jsp, asp, htm, shtml, sh, cgi
# secure directory by disabling script execution AddHandler cgi-script .php .pl .py .jsp .asp .htm .shtml .sh .cgi Options -ExecCGI
sponsors