サーバーの設定をカスタマイズ、よく利用する「.htaccess」の設定のまとめ

ウェブサイトやブログの運営に役立つ、「.htaccess」の設定を紹介します。

サイトのキャプチャ

.htaccess For All

下記は各ポイントを意訳したものです。
「.htaccess」ファイルを編集する際は、必ずバックアップをとることをお勧めします。

.htaccessファイルの作成とアップロード

「.htaccess」ファイルを作成することは非常に簡単です。
テキストベースのアプリケーションを開き、ワードラップ機能をオフにしてコードを記述し、ファイルを保存します。

Windowsのメモ帳などを使用すると保存する際、ファイル名に「.txt」が加わってしまいます。

.htaccess.txt

これは特に問題ありません。
ファイルをアップロードした後、サーバー上でリネームしてください。

.htaccess

ファイルをアップロードする際は、ASCIIモードで行い、パーミッションは「644」にします。
共有サーバーなどでは「604(グループ不可)」の場合もあるので、システム管理者やサーバー会社へ確認してください。

.htaccessの使い方・有効範囲

「.htaccess」ファイルは設置されたディレクトリとその配下にある全てのディレクトリに影響を与えます。
つまり、ルートに「.htaccess」ファイルを設置した場合は、全てのフォルダに影響を与えます。

http://www.yourdomain.com/
| -- directory1
| -- directory2
| -- directory3
|    | -- directory3/childdirectory1
|    | -- directory3/childdirectory2
| -- .htaccess
| -- index.html

「.htaccess」をルートではなく、一つ下の「directory1」に設置するとどうなるでしょうか?
この場合は「directory1」とその配下のフォルダのみに限定されます。
「directory2」「directory3」には適用されません。

http://www.yourdomain.com/
| -- directory1
|    | -- directory1/childdirectory1
|    | -- directory1/childdirectory2
|    | -- directory1/childdirectory3
|    |    | -- directory1/childdirectory3/newdirectory1
|    |    | -- directory1/childdirectory3/newdirectory2
|    | -- .htaccess
|    | -- index.html
| -- directory2
| -- directory3

「.htaccess」ファイルを編集する場合は、コメントを利用することを勧めます。
「#」を使用すると、その行がコメントになります。

# コメント
# another comment her

.htaccessのよく使う設定のまとめ

インデックスファイルの設定

「/」で終わるアクセスの際に表示するファイル名を設定します。
通常はindex.html, index.htmです。

DirectoryIndex index.php

エラーページの設定

404のエラーページに任意のファイルを指定します。

ErrorDocument 404 error.html

他のエラー時も設定できます。

ErrorDocument 400 /400.html
ErrorDocument 401 /401.html
ErrorDocument 403 /403.html
ErrorDocument 404 /404.html
ErrorDocument 500 /500.html
ErrorDocument 502 /502.html
ErrorDocument 504 /504.html

URLからwwwを削除

ウェブサイトにwww付きでアクセスしてきてもwww無しに向け直します。
これを利用する際は、あなたのサイトでwww無しで一貫するようにしてください。

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

タイムゾーンの設定

タイムゾーンを日本時間に設定します。

SetEnv TZ JST-9

もしくは

SetEnv TZ Asia/Tokyo

ファイルへのアクセス制限

アクセス可能なファイルを設定します。
まずは、全アクセスを禁止。

order deny,allow
deny from all

続いて、特定のIPアドレスのみ禁止。

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

301リダイレクト

リニューアルなどでURLが恒久的に変更した際に、旧ページのアクセスを新ページに向けます。

Redirect 301 /olddirectory/file.html http://www.yourdomain.com/newdirectory/file.html

サーバー管理者のメールアドレスの設定

サーバー管理者用のメールアドレスを設定します。

ServerSignature EMail
SetEnv SERVER_ADMIN webmaster@domain.com

iPadなどのタブレットを検出して、リダイレクト

iPad, Androidのタブレットでアクセスがあった際、専用ページにリダイレクトします。

RewriteCond %{HTTP_USER_AGENT} ^.*iPad.*$
RewriteRule ^(.*)$ http://yourdomain.com/folderfortablets [R=301]
RewriteCond %{HTTP_USER_AGENT} ^.*Android.*$
RewriteRule ^(.*)$ http://yourdomain.com/folderfortablets [R=301]

hotlinkingの防止

hotlinkingとはあなたのサイトの画像を他の誰かに勝手に利用されてしまうことで、その際に別の画像を指定して表示させます。

Options +FollowSymlinks
RewriteEngine On
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://(www.)?yourdomain.com/ [nc]
RewriteRule .*.(gif|jpg|png)$ http://yourdomain.com/img/hotlink_f_o.png [nc]

自ドメインを含まないサイトに画像を表示させたくないだけの場合。

RewriteCond %{HTTP_REFERER} !yourdomain\.com [NC] RewriteRule \.(gif|jpg|png)$ - [F]

PDFや動画などのファイルを保存

PDFや動画などのファイルをブラウザ上で表示するのではなく、ダウンロードしてほしいファイルの拡張子を設定します。

AddType application/octet-stream .csv
AddType application/octet-stream .xls
AddType application/octet-stream .doc
AddType application/octet-stream .avi
AddType application/octet-stream .mpg
AddType application/octet-stream .mov
AddType application/octet-stream .pdf

下記のように一行に指定することもできます。

AddType application/octet-stream .avi .mpg .mov .pdf .xls .mp4

URLのリライト

「content-1.html」を「content.php?id=1」にリライトします。

RewriteEngine on
RewriteRule ^content-([0-9]+)\.html$ content.php?id=$1

httpsにリライト

現在のアクセスをhttpsにリライトします。

RewriteEngine On
RewriteCond %{HTTPS} !on
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}

SSIの利用

SSIが利用できるファイルの拡張子を設定します。

AddType text/html .html
AddType text/html .shtml
AddHandler server-parsed .html
AddHandler server-parsed .shtml
AddHandler server-parsed .htm

ディレクトリの表示

ディレクトリにindex.htmlなど表示するべきファイルが無い場合、ディレクトリのファイル一覧が表示されないようにします。

# disable directory browsing
Options All -Indexes

ディレクトリの表示を許可します。

# enable directory browsing
Options All +Indexes

文字コードの設定

特定のディレクトリで文字セットと言語を変更したい場合の設定です。

AddDefaultCharset UTF-8
DefaultLanguage en-GB

特定のリファラからのアクセスをブロック

指定したウェブサイトのリファラからのアクセスを阻止します。

<IfModule mod_rewrite.c>
 RewriteEngine on
 RewriteCond %{HTTP_REFERER} website1.com [NC,OR]
 RewriteCond %{HTTP_REFERER} website2.com [NC,OR]
 RewriteRule .* - [F]
</ifModule>

特定のUAを持ったアクセスをブロック

指定したロボットやスパイダーのアクセスを阻止します。

<IfModule mod_rewrite.c>
SetEnvIfNoCase ^User-Agent$ .*(bot1|bot2|bot3|bot4|bot5|bot6|) HTTP_SAFE_BADBOT
SetEnvIfNoCase ^User-Agent$ .*(bot1|bot2|bot3|bot4|bot5|bot6|) HTTP_SAFE_BADBOT
Deny from env=HTTP_SAFE_BADBOT
</ifModule>

特定のファイルのアクセスをブロック

拡張子を指定して、.htaccessなどのファイルのアクセスを阻止します。

<Files privatefile.jpg>
 order allow,deny
 deny from all
</Files>
<FilesMatch ".(htaccess|htpasswd|ini|phps|fla|psd|log|sh)$">
 Order Allow,Deny
 Deny from all
</FilesMatch>

「.htaccess」の名前の変更

「AccessFileName」を使用すると「.htaccess」の名前を変更して利用できます。
※「httpd.conf」で設定

AccessFileName ht.access

top of page

©2017 coliss