設定ファイルの確認と修正
http.confファイルに記載されているデフォルトの内容を確認し、また修正を一部行います。http.confファイルをテキストエディタで開いて下さい。ファイルの場所は前のページで記載した通り「(XAMPPインストールディレクトリ)¥apache¥conf¥http.conf」です。
ファイルの修正も一部行いますので心配であれば修正前のファイルをコピーしてバックアップを取っておけば安心です。ではファイルの内容を確認していきます。
なお設定ファイルを変更した場合、新しい設定をApacheに反映させるにはApacheを再起動する必要があります。
ServerRoot
42行目を見てください。
ServerRoot "D:/xampp/apache"
「ServerRoot」はApacheがインストールされているディレクトリを表します。私の環境では「D:¥xampp¥apache」となります。Apacheの各種設定の中で絶対パスではなく相対パスで記述されている場合はこのServerRootで指定したディレクトリからの相対パスとなります。
Listen
53行目を見てください。
Listen 80
「Listen」はApacheが外部からリクエストを受け付けるポート番号を指定します。Webサーバはポート番号80番を使用するのが一般的です。もしApacheの他にもWebサーバを起動している場合、既に80番ポートを使用している場合などに違うポート番号を使用する場合には変更します。
LoadModule
67行目を見てください。
LoadModule actions_module modules/mod_actions.so LoadModule alias_module modules/mod_alias.so LoadModule asis_module modules/mod_asis.so ...
同じような記述が並んでいると思いますが、「LoadModule モジュール名 ファイル名」という書式となっています。これは利用するモジュールを読み込むために記述されています。なお先頭に「#」が記述されている行はコメントとなっています。今度必要なモジュールの先頭に「#」が付いている場合は「#」を外してモジュールを読み込むようにします。逆に不要なモジュールの先頭に「#」を記述するとコメント扱いとなりモジュールを読み込まなくなります。(もちろん行そのものを削除しても同じです)。
ServerAdmin
166行目を見てください。
ServerAdmin admin@localhost
「ServerAdmin」はApacheがエラー表示を行う場合などに、問い合わせ先となる連絡先メールアドレスを表示する時に使われます。利用者の方がWebサーバの管理者に対して問い合わせをする場合のメールアドレスを指定して下さい。例えば「ServerAdmin admin@example.jp」などです。
ServerName
175行目を見てください。
ServerName localhost:80
「ServerName」はApacheサーバが自分自身のホスト名を示す時に使われる名前を指定します。書式は「ホスト名:ポート番号」ですがポート番号は省略も可能です。例えば「ServerName www.example.jp:80」などのように記述します。
DocumentRoot
182行目を見てください。
DocumentRoot "D:/xampp/htdocs"
「DocumentRoot」はWebサーバとして公開するコンテンツを配置しておくルートディレクトリを指定します。ディレクトリは絶対パス、又はServerRootからの相対パスで指定します。最後にスラッシュ(/)は記述しないで下さい。
配置されたファイルとクライアントからのリクエストの関係は次のようになります。
ブラウザからのリクエストURL http://localhost/index.html クライアントへ返される実際のファイル D:/xampp/htdocs/index.html ブラウザからのリクエストURL http://localhost/sub/index.html クライアントへ返される実際のファイル D:/xampp/htdocs/sub/index.html
コンテンツの配置については次のページで詳しく確認します。
アクセス制限
192行目を見てください。途中でコメントなどが入っていますが、次のような記述があります。
<Directory />
Options FollowSymLinks
AllowOverride None
Order deny,allow
Deny from all
</Directory>
<Directory "D:/xampp/htdocs">
Options Indexes FollowSymLinks Includes ExecCGI
AllowOverride All
Order allow,deny
Allow from all
</Directory>
細かい解説は省略させて頂きますが、まずWebサーバが起動しているPCのルートディレクトリ以下の全てのディレクトリに対して外部からのアクセスを拒否しています。この設定によってXAMPPも含むPC内の全てのディレクトリに含まれるファイルに外部からアクセスできなくなります。
次に「D:/xampp/htdocs」ディレクトリ以下の全てのディレクトリに対してアクセスを許可しています。このディレクトリはApacheのドキュメントルートで設定されたディレクトリですので、外部からはこのディレクトリ(及び全てのサブディレクトリ)に含まれるファイルを閲覧することができるようになります。
この設定によってWebサーバが動作しているPCで、必要最小限のデータのみ外部に公開することができるようになります。
またドキュメントルートのディレクトリに対してはオプションが次のように設定されています。
Options Indexes FollowSymLinks Includes ExecCGI
これは次のような意味を持ちます。
Indexes ファイルが指定されていない時にファイル一覧表示 FollowSymLinks シンボリックリンクの許可 Includes SSIを有効にする ExecCGI CGIの実行を許可
この中で「Indexes」は例えば「http://localhost/dir/subdir/」にようにファイル名が省略された形でリクエストがあり、またindex.htmlなど省略された時に表示するように指定されたファイルも存在しなかった場合にディレクトリに含まれるファイルの一覧を表示するオプションです。このオプションはセキュリティ的に望ましくない設定なので次のように書き換えます。
<Directory "D:/xampp/htdocs">
Options FollowSymLinks Includes ExecCGI
AllowOverride All
Order allow,deny
Allow from all
</Directory>
DirectoryIndex
243行目を見てください。
<IfModule dir_module>
DirectoryIndex index.php index.php4 index.php3 index.cgi index.pl index.html index.htm index.shtml index.phtml
</IfModule>
「DirectoryIndex」はファイル名が省略された形でリクエストがあった場合に、どのファイルを表示するのかを指定します。
例えば「http://localhost/」のようにリクエストがあった場合には、次のようにファイルを検索していきます。
http://localhost/index.php http://localhost/index.php4 http://localhost/index.php3 http://localhost/index.cgi http://localhost/index.pl http://localhost/index.html http://localhost/index.htm http://localhost/index.shtml http://localhost/index.phtml
もしも「http://localhost/index.php」が存在すれば「http://localhost/index.php」としてリクエストがあったように処理します。もしも「index.php」ファイルがディレクトリに存在しなければ次の「http://localhost/index.php4」を探します。そして順に探していき、全て見つからなければファイルが存在しないといったエラーを表示します。(Options Indexesが指定されていた場合はディレクトリに含まれるファイルの一覧を表示します)。
現状「http://localhost/」とブラウザからアクセスすると「D:/xampp/htdocs」ディレクトリにはindex.phpとindex.htmlファイルが存在しますので、「D:/xampp/htdocsindex.php」ファイルをリクエスト元に返しています。今後は先にHTMLファイルを検索するようにして欲しいので次のように書き換えを行います。
<IfModule dir_module>
DirectoryIndex index.html index.php
</IfModule>
.htaccessファイル及び.htpasswdファイルへのアクセス制限
251行目を見てください。
<FilesMatch "^¥.ht">
Order allow,deny
Deny from all
</FilesMatch>
この設定は仮にドキュメントルート以下のディレクトリに含まれるファイルであっても「.ht」で始まるファイルへの外部からのアクセスを禁止しています。具体的には.htaccessファイルや.htpasswdファイルを外部から参照できないように設定しています。
ErrorLog
263行目を見てください。
ErrorLog logs/error.log
「ErrorLog」はエラーログが書き出されるファイルを指定します。相対パスで記述されていますので「ServerRoot」からの相対位置での指定となっていますので実際の位置は「D:/xampp/apache/logs/error.log」となります。
LogLevel
270行目を見てください。
LogLevel warn
「LogLevel」はどのレベルまでのエラーを記録するかを8段階で指定することが可能です。現在設定されている「warn」は警告以上のエラーをログに記録します。
これ以降は個別のモジュールに関する設定となりますので今後必要に応じて確認していきます。
( Written by T.buzz.Ikura+ )