.htaccessに書いておくべきこと9項目

Webサイト制作の際に書いておきたい.htaccessの記述

  1. ディレクトリ一覧の表示制限
  2. wwwあり、なしの統一
  3. キャッシュ
  4. 圧縮
  5. エラーページ
  6. 拡張子.htmlでPHPを動作
  7. 画像の直リンク禁止
  8. アクセス制限
  9. SVG画像の表示

書き方の注意事項

  • コメントは#を頭につける。 #コメント記述例
  • 文字コード UTF-8 BOM無し
  • 改行コードはLFを設定
  • ファイルの最後の行は一行空の行を入れる

1. ディレクトリ一覧の表示制限

 ファイル一覧、ディレクトリ一覧の表示を制限するための記述です。

Options -Indexes

 さくらのレンタルサーバーの場合は、ファイルマネージャーからの操作になります。

2. wwwあり、なしの統一 301リダイレクト

 URLの正規化はSEOでは重要なポイント。wwwありと無しは301リダイレクトで統一を。

RewriteEngine on
RewriteCond %{HTTP_HOST} ^www\.yourdomain\.com
RewriteRule ^(.*)$ http://yourdomain.com/$1 [R=301,L]

3. キャッシュ

 ExpiresByTypeで、拡張子ごとに設定します。

<IfModule mod_expires.c>
ExpiresActive On
ExpiresByType image/jpg "access 1 weeks"
ExpiresByType image/jpeg "access 1 weeks"
ExpiresByType image/gif "access 1 weeks"
ExpiresByType image/png "access 1 weeks"
ExpiresByType text/css "access 1 weeks"
ExpiresByType application/pdf "access 1 weeks"
ExpiresByType text/x-javascript "access 1 weeks"
ExpiresByType application/x-shockwave-flash "access 1 weeks"
ExpiresByType image/x-icon "access 1 weeks"
ExpiresDefault "access 2 days"
</IfModule>

4. 圧縮

 htmlやcssは圧縮します。

<IfModule mod_deflate.c>
AddOutputFilterByType DEFLATE text/html
AddOutputFilterByType DEFLATE text/css
AddOutputFilterByType DEFLATE text/xml
AddOutputFilterByType DEFLATE application/rss+xml
AddOutputFilterByType DEFLATE application/xml
AddOutputFilterByType DEFLATE application/xhtml+xml
AddOutputFilterByType DEFLATE application/javascript
AddOutputFilterByType DEFLATE application/x-javascript
</IfModule>

5. エラーページ

 エラーページを作っておきましょう。

 404でドキュメントが見つからない時には、トップページへのリンクがあると便利。

ErrorDocument 404 /error.html

6. 拡張子.htmlでPHPを動作

 ふつうのサーバーであれば、この記述でいけます。

AddType application/x-httpd-php .html

 さくらのレンタルサーバーのみ記述+PHPファイルのコピーが必要。以下の記述を下上で、FTPソフトで/usr/local/bin/php-cgiファイルをダウンロード。

 自分のwww/以下のフォルダにアップロードします。

Action myphp-script /php.cgi
AddHandler myphp-script .php .html

7. 画像の直リンク禁止

 世の中には、画像の直リンをする方がけっこういるのです。

SetEnvIf REFERER "^http://yourdomain\.jp" ok
order deny,allow
deny from all
allow from env=ok

8. アクセス制限

 時々使います。

order allow,deny
allow from all
deny from XXX.XXX.XXX.XXX

9. SVG画像の表示

 使わない方には不要です。

AddType image/svg+xml .svg .svgz
AddEncoding gzip .svgz