知らなきゃ絶対損するPCマル秘ワザ
『月,水,金』の週3回更新!(予定)

こんにちは、さち です。
先日、prepreset GENERATOR でエラーが出るとコメントを頂き
修正をしていました。
原因は CGI が正常動作していないことだったんですが
その原因の根源は「.htaccess」ファイルにありました。
ただ、これまで「.htaccess」については
あまり勉強せずその場しのぎで来てしまっていたので
簡単な修正にも関わらず手間取ってしまいました…。
今回は、反省の意味を込めて
「.htaccess」の記述方法の基礎をまとめていきます。
基礎知識
■ 「.htaccess」ファイルとはサイトの表示,動作を設定するためのファイルで
「ドット エイチ ティー アクセス」と読みます。
サーバがこのファイルを読み取ることでサイトの制御を行います。
中身は単なるテキストなので「メモ帳」でも作成できます。
■ 使用の可否
一部のレンタルサーバでは
「.htaccess」ファイルの設置を許可していない場合があります。
その場合、サーバに「.htaccess」を設置しても機能しません。
■ 適用範囲
「.htaccess」の内容は設置したディレクトリ以下で有効です。
例えば、「http://example.com/sample/」に設置した場合
子である「http://example.com/sample/test/」にも有効ですが
親である「http://example.com/」には効果がありません。
■ 複数設置した場合
「.htaccess」が複数ある場合すべて有効になります。
例えば、「http://example.com/sample/」と
子である「http://example.com/sample/test/」に設置した場合
子の「http://example.com/sample/test/」では
2つの「.htaccess」両方の内容が適用されます。
両方に同じ種類の設定がある場合は子の方が優先されます。
■ 記述したら必ず改行
設定内容を記述した行は
最後に改行を入れないと正常動作しない場合があります。
つまり、最終行は空っぽの行で終わらせましょう。
■ パーミッション
「.htaccess」ファイルのパーミッションは
通常の静的ファイルと同じく「644」にします。
共用サーバの場合は「604」の方がよいです。
■ Windowsの仕様
Windows はファイル名を拡張子だけにできないので
直接「.htaccess」というファイルを作ることはできません。
一旦、ファイル名を「.htaccess.txt」などにしておき
アップロード後、FTPソフト等で「.htaccess」へ変更します。
記述法1 - コメントアウト
「#」以降は行の終わりまでコメントと見なされます。#コメントアウト
行の途中に「#」を使うこともできますが
サーバ環境によっては不具合が出る可能性があるので非推奨。
行頭に「#」を書いて一行すべてをコメントとする方が無難です。
記述法2 - ファイル一覧の表示/非表示

「index.html」などが無いディレクトリに直接アクセスした場合
そのディレクトリにあるファイル一覧を表示するかどうか。
#表示する
Options Indexes
#表示しない
Options -Indexes
特に理由がない限り
セキュリティ面から「表示しない」にするのが無難です。
サーバによっては
初期設定で「表示しない」になっていることもあり
その場合「.htaccess」で設定をしなくても表示されません。
記述法3 - 404エラーは専用ページを表示

存在しないページにアクセスした時に出るエラー
「404 Not Found」が発生した場合に専用ページを表示します。
#404エラーの時は「error.html」を表示
ErrorDocument 404 /error.html
例えば、404エラー用のページ「error.html」を作成し
「http://example.com/error.html」に設置した場合は
ドメイン部分は書かずに、「/error.html」と書きます。
#エラー用ページを「http://example.com/error.html」に設置した場合
ErrorDocument 404 /error.html
#URLが書き換わってしまうので絶対パスはダメ
ErrorDocument 404 http://example.com/error.html
ちなみに、「404」の部分を「403」「500」など別の数字にすれば
他のエラーについても専用ページを表示できます。
記述法4 - CGIを使う
拡張子「.cgi」のファイルをCGIとして動かします。#拡張子「.cgi」のファイルをCGIとして認識させる
AddHandler application/x-httpd-cgi .cgi
#サーバによっては「AddType」を使う場合も
AddType application/x-httpd-cgi .cgi
記述内容としては
拡張子「.xxx」のファイルを「○○○」として認識させる
という指示です。
SSI を使う拡張子を指定する場合も同様の方法で記述します。
#拡張子「.shtml」「.html」で SSI を使う
AddHandler text/x-server-parsed-html .shtml .html
レンタルサーバによって記述方法が異なるので
サーバ会社が開示している情報に従って記述しましょう。
記述法5 - 初期表示ページを変更
ファイルを指定せず「ディレクトリ」にアクセスした場合に初期表示するページは「index.html」ですが、「index.php」に変更します。
#初期表示ページを「index.php」に変更
DirectoryIndex index.php
#「index.php」が無いときは「index.html」を表示
DirectoryIndex index.php index.html
常に動的ページを表示したい場合などに使うと便利です。
記述法6 - アクセス制限(Basic認証)

ID と パスワード を入力しないとページを表示できないようにします。
ただし、セキュリティが激甘なので重要なことに使ってはいけません。
あくまで簡易的な認証として割り切って使って下さい。
#Basic認証の使用宣言
AuthType Basic
#アクセス時のダイアログに表示される領域名(何でも良い)
AuthName "sachi-web.com"
#「.htpasswd」が存在する絶対パス(相対パスはダメ)
#URLではなくサーバ内のパスなので注意
AuthUserFile /home/xxxxx/.htpasswd
#認証したユーザは誰でもアクセスOKという意味の記述
require valid-user
#外部から「.htaccess」「.htpasswd」が見えないようにする
<Files ~ "^\.(htaccess|htpasswd)$">
deny from all
</Files>
「.htpasswd」には、Basic認証に使う「ID」と「暗号化したパスワード」を記述します。
パスワードの暗号化する方法については検索すればすぐに出てきます。
(レンタルサーバが暗号化ツールを公式提供している場合もあり)
改行すると複数の ID と パスワード を記述できます。
id1:passward1
id2:passward2
id3:passward3
詳細は下記の記事を読んでみて下さい。
→ 「Basic認証」用の「.htaccess」ファイルを作成する

| ホーム |