当ブログは移転しました。
新しいブログの該当記事に転送中です。少々お待ち下さい。
(転送しない場合は下記リンクへお進み下さい)

『何となくで使ってた「.htaccess」について勉強し直す』
https://at.sachi-web.com/blog-entry-1112.html

知らなきゃ絶対損するPCマル秘ワザ

知らなくて損したPC情報とかを分かりやすくメモする個人ブログ。
『月,水,金』の週3回更新!(予定)

何となくで使ってた「.htaccess」について勉強し直す

イメージ


こんにちは、さち です。

先日、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」ファイルを作成する






ブログ移転に伴い、コメント受付は終了しました。




2008-2023 知らなきゃ絶対損するPCマル秘ワザ  無断転載禁止