サーバーの設定をカスタマイズ、よく利用する「.htaccess」の設定のまとめ
Post on:2012年7月24日
ウェブサイトやブログの運営に役立つ、「.htaccess」の設定を紹介します。
下記は各ポイントを意訳したものです。
「.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/\ [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
sponsors