ウェブサイトのパフォーマンス改善やセキュリティに役立つ.htaccessの設定

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

サイトのキャプチャ

17 Useful Htaccess Tricks and Tips
備考:Apache チュートリアル: .htaccess ファイルApache コア機能

.htaccessの設定:パフォーマンスやSEO関連

.htaccessでタイムゾーンを設定

.htaccessでタイムゾーンを設定します。
例:東京

SetEnv TZ JST-9

もしくは、

SetEnv TZ Asia/Tokyo

.htaccessで301リダイレクトを設定

.htaccessで301リダイレクト(永続的なリダイレクト)を設定します。
例:旧ファイル(old.html)、新ファイル(new.html)

Redirect 301 http://coliss.com/old.html http://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 ^(.*)$ http://coliss.com/$1 [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>

.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

top of page

©2016 coliss
o