「.htaccess」ファイルでの設定

「.htaccess」ファイルとは

Apacheの設定ファイル「httpd.conf」やPHPの設定ファイル「php.ini」で色々設定しましたが、設定の変更を有効にするにはサーバを再起動する必要があり、契約中のサーバの設定をこれらで設定変更する事は出来ません。契約中のサーバの設定を行いたい時に使用する事が出来るのが「.htaccess」ファイルです。このファイルには、制限がありますがサーバの設定を書き加える事が出来ます。アクセス制限などにも使われます。

「てゆーか名前が変なんですけど。」

「.htaccess」というファイル名ですが、ファイル名というか拡張子しかありません。Windowsでこのような名前を付けるには「新規作成」→「テキスト文書」→「名前の変更」のような方法では付けられないので、適当な名前で作ったファイルを開いて「名前を付けて保存」で「.htaccess」と記入するとOKです。もしくはサーバに転送した後に変更します。

「.htaccess」ファイルはドキュメントルート以下に置き、置いたディレクトリ以下の全てのディレクトリに対して有効になります。

また、「.htaccess」ファイルはサーバ業者が使用を許可していなければ使用する事が出来ません。

「.htaccess」ファイルでPHPの設定を行う

PHPの設定は「php.ini」ファイルで行いましたが、「.htaccess」ファイルでも行えます。しかし、設定出来るものと出来ないものがあります。

「.htaccess」ファイルで設定出来るものは、PHPのマニュアルにおいて「変更の可否」が「PHP_INI_PERDIR」または「PHP_INI_ALL」と指定されているもののみです。

php_value」ディレクティブと「php_flag」ディレクティブ

「.htaccess」ファイルに記述するPHPの設定
#PHPの設定(PHP5の場合は「mod_php5.c」)
<IfModule mod_php4.c>
    #インクルードパスの設定
    php_value include_path ".:/usr/local/lib/php:/html/_incs_"
    
    #不用意なエラーレポート出力をさせないようにする
    #必要に応じて「ini_set("display_errors", 1)」を使うのがベター
    php_flag  display_errors Off
    
    #「mbstring」関係の設定
    php_value mbstring.language "Japanese"
    php_value mbstring.internal_encoding "EUC-JP"
    php_flag  mbstring.encoding_translation Off
</IfModule>

「.htaccess」ファイルでPHPの設定を行う場合は「php_value」ディレクティブもしくは「php_flag」ディレクティブを使います。

php_value」ディレクティブと「php_flag」ディレクティブのどちらを使うかは、PHPのディレクティブに与える値が文字列か論理値(「On」もしくは「Off」)かによって決まります。ディレクティブが受け取る値が文字列である場合は「php_value」ディレクティブを、論理値である場合は「php_flag」ディレクティブを使います。

PHPの設定ファイル「php.ini」では以下のように記述しましたが、「.htaccess」ファイルでは「=(イコール)」を書かない事に注意。

;「php.ini」での設定
include_path = ".;c:\php\pear;c:\php\cli\pear;c:\html\_incs_"
#「.htaccess」での設定
php_value include_path ".:/usr/local/lib/php:/html/_incs_"

「.htaccess」ファイルは複数のディレクトリに置く事が出来るため、下位のディレクトリで上位と同じディレクティブを使用した場合、上書きされます。上位のディレクトリで設定した値をクリアしたい場合は、値に「none」を指定します。

以上で、「.htaccess」ファイルでの設定の解説は終了です。

が、「.htaccess」で設定しといた方がいいことがあります。このままでも動く事は動きますが、セキュリティ的に問題があるかもしれません。

PHPスクリプトのファイル名は通常「*.php」という名前を付けますが、インクルードするファイル名には識別し易いように「*.inc」と付ける風潮があります。インクルードする分には問題ありませんが、このファイルに直接アクセスした場合、ドキュメントタイプが不明なので(PHPスクリプトとして解釈されず)、コードがアホみたいにそのまま送信されてしまいます。

また、掲示板の様なスクリプトはたいがい、記録用の外部ファイルにデータを読み書きしていると思いますが、この外部ファイル(ログファイル)も直接アクセスして見るものでもないし、見られたいものでもありません。

なので、これらのファイルにはアクセス出来ないようにするなりした方が良いです。以下のサイトがとても参考になりますので、設定する事をお勧めします。ちなみに、業者側で設定している場合もありますが、判らないので自分でも設定しときましょう。


.htaccess実践活用術


「.htaccess」の詳細については、以下のページが参考になります。


Apache チュートリアル: .htaccess ファイル...(Apache2用)
ミケネコの htaccess リファレンス

作成日:2004年06月15日 最終更新日:2004年11月17日
【印刷モード風モード で表示】