Apache2.0のディレクトリ設定(.htaccess)
PHPプログラムを作成していると、プログラムの途中でも動作を確認したくなることが多々あります。動作確認のため、*.phpファイルをWEBサーバのトップディレクトリ(私の場合、/mnt/www)に置いても構わないのですが、作りかけのプログラムを公開しているディレクトリに置くのも余りよろしくないので、ローカルLAN以外からは、アクセスできない特別なディレクトリを作ることにしました。
外部からアクセスできないディレクトリの設定
外部からアクセスできない動作確認用ディレクトリを作成するために、Apache2.0のサイト設定用ファイル/etc/apache2/sites-available/defaultを編集します。
# DocumentRoot /var/www/
DocumentRoot /mnt/www/
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
# <Directory /var/www/>
# Options Indexes FollowSymLinks MultiViews
# AllowOverride None
<Directory /mnt/www/>
Options FollowSymLinks MultiViews <-- 変更①
AllowOverride Limit <-- 変更②
Order allow,deny
allow from all
# This directive allows us to have apache2's ....
# in /apache2-default/, but still have / go to ....
# RedirectMatch ^/$ /apache2-default/
順序が逆になりますが、変更②から説明します。変更②が外部からのアクセスを防ぐための設定で、Apacheのオーバーライド機能を使用します。すぐ下の「Order allow, deny」、「allow from all」とあるように、トップディレクトリ/mnt/www/は誰でもアクセス可能ですが、AllowOverride Limitとすることで、.htaccessがあるディレクトリのアクセス制限を変更することができます。具体的には、.htaccessの中身を次のようにすることで、.htaccessがあるディレクトリは内部LANからしかアクセスできなくなります。
Order allow, deny allow from 192.168.***.0/24
***は、自分のサイトのアドレスを入れてください。
リスト表示をしないようにする設定
上の/etc/apache2/sites-available/defaultの変更①は、今回の目的とは直接関係がありませんが、http://www.arakin.dyndns.org/renshu/のようにディレクトリをアクセスされた時に、次のようなリスト表示をさせないための設定です。私の場合、セキュリティというより、あまり見られたくはないからです。

Optionsの中のindexesがリスト表示を有効にしますので、これを外します。上記設定を有効にするために、Apache2.0を再起動します。
# /etc/init.d/apache2 restart
ブラウザで、http://www.arakin.dyndns.org/renshu/とした時に、次のような画面になれば、正しく動作しています。

最新の7件
OpenGL
電子工作
玄箱HG
- ClamAVのアップデート
- Smartyも入れてみる
- etchでPHP4->PHP5
- etchでのSamba設定
- etchでのメール設定
- 玄箱HGのetch化
- Webdruidでログ解析
- PEARも入れてみる
- 玄箱WEBのUTF-8化
- phpMyAdminでMySQL
- postmasterの変更
- ウィルスメール対策
- SPAMメール対策
- メールサーバ(IMAP)
- メールサーバ(Postfix)
- 猫にXOOPS
- PHPも入れてみる
- MySQLを入れてみる
- Subversion導入
- WebDav導入
- Apacheのrewrite機能
- Apacheディレクトリ設定
- Apache1.3->2.0
- ddclientの設定
- 静かな玄箱
- ユーザ追加