Apacheの設定ファイル httpd.conf を開き、 AllowOverride の設定をNone からAllに変更しておく。
AllowOverride All
CGIスクリプトが使えるようにするにはCGIスクリプトを置くディレクトリ内の .htaccess に
AddHandler cgi-script .cgi Options +ExecCGIと書く。
httpd.conf を開き、次の行を見つける。
# To use server-parsed HTML files # #AddType text/html .shtml #AddHandler server-parsed .shtml
AddType と AddHandler のコメントアウト#を外す。 そして.shtml ファイルを置くディレクトリの Options に Includes を加える。
<Directory "/Library/WebServer/Documents"> Options Includes </Directory>
SSIを記入するファイルは拡張子をshtmlにする。
アクセス制限したいファイルのある階層又は上層にある.htaccessを編集する。 .htaccessのあるディレクトリ配下へのアクセスのに対して、ある特定のドメインからのアクセスを拒否するには次のように記述する。
order allow,deny allow from all deny from .hogehoge.comこれで、*.hogehoge.comからのアクセスを拒否できる。 また、特定のファイル(test.html)に対してある特定のドメインからのアクセスを拒否するには、
<Files test.html> deny from .hogehoge.com </Files>のように記述すればよい。
▼参考サイト or 参考文献
.htaccess をパスワードによってアクセスを制限したいファイルのあるディレクトリ内に作成する。
/usr/local/apache/htdocs/private/example.htmlに対して、アクセス制限したければprivate/.htaccess に作成する。 .htaccessの内容は、
AuthUserFile /Users/user_name/mypasswd/.htpasswd AuthGroupFile /dev/null AuthName "Member Only" AuthType Basic require valid-userとする。 1行目はユーザー名とパスワードを設定したファイルの指定。 このファイルの作成法は後述する。 2行目はグループごとにアクセス制限するときに使う。 3行目は認証名と呼ばれ、ユーザー名とパスワードの入力ダイアログに現れる文字列。 4行目は認証の方式で、ここではBasicとする。 最後に、認証されるユーザーを指定する。 valid-userならば、登録されているすべてのユーザーが認証される。 もし特定のユーザーのみに許可するなら、
require user taro jiro saburoとすればよい。
ユーザー名とパスワードを記述したファイルを作成するには、htpasswdというコマンドを用る。
$ htpasswd -c /Users/user_name/mypasswd/.htpasswd taroオプションの -c は新規に作成するときのみに必要。/Users/user_name/mypasswd/.htpasswdにはパスワードファイルを指定する。Webからアクセスできないところに置いておくと安全。追加するユーザー名を最後に書く。 この後パスワードを聞かれるので、2回入力する。
最後にApacheを再起動すれば設定が反映される。
# apachectl restart
▼参考サイト or 参考文献
MacOSXにはTCP Wrapperがインストールされている。 TCP Wrapperはtelnetやftpによる外部からのアクセスを、IPアドレスで制限する機能を持つ。 TCP Wrapperの機能を実際に行っているプログラムはtcpd。
設定ファイルは、/etc/hosts.allow, /etc/hosts.denyの2つ。 存在しなければ自分で作成する。 まず、外部からのアクセスがあったときには、hosts.allowが存在するかどうかチェックされ、無い場合にはhosts.denyを見る。 hosts.denyも無ければアクセスをすべて許可する。
アクセスを許すホストを記述し、それ以外は拒否する場合には、hosts.allowに次のように記述する。
#-(hosts.allow)----------------------------- ALL : 192.168.1.100/255.255.255.255 \ 192.168.1.102/255.255.255.255 telnetd : 192.168.2.0 /255.255.255.0 ftpd : 192.168.2.101/255.255.255.255 \ 192.168.2.102/255.255.255.255 #--------------------------------------------
一行目のALLは、すべてのアクセスを許すホストを書いておく。 複数行に渡るときは前行の最後に \ (バックスラッシュ)を付ける。 次の行 telnetd の所は、telnetによるアクセスを許可するホストを書く。 サブネットマスクを 255.255.255.0 のようにしておけば、192.168.2.*のすべてのホストからのアクセスを許可する。ftpdも同様に記述する。
次に、hosts.denyには、アクセス拒否するホストを記述するが、これはhosts.allowが無い場合にのみ使用される。 したがって、万一の場合のために次のように記述しておくとよい。
#-(hosts.deny)----------------------------- ALL : ALL #--------------------------------------------
設定すればすぐに機能するはずだが、もし機能していないならinetdをkill -HUP(再起動)してみる。
% ps -ax | grep inetd 242 ?? Ss 0:00.04 inetd 10053 std R+ 0:00.00 grep inetd % kill -HUP 242
上記のアドレスの指定方法は下記のような表現が可能。
#----------------------------------- # IPアドレスで指定 192.168.1.100 # ネットワークで指定 192.168.1.0/255.255.255.0 # ネットワークで指定(その2) 192.168.1. # ネットワークで指定(例外を表記) 192.168.1. EXCEPT 192.168.1.100 # ドメイン名で指定 .abc.hoge.com # ドメイン名で指定(例外を表記) .abc.hoge.com EXCEPT sample.abc.hoge.com # ホスト名で指定 myhost.abc.hoge.com #------------------------------------------
Mac OS X に入っているApacheでは問題なかったが、Fedora Core 1 にインストールしたApacheの 設定ファイル httpd.conf の中で AddDefaultCharset が指定されていると文字化けが起きる分かった。
この設定を書くと文字コードの設定で最優先となるため、HTMLファイルがここで設定された文字コード以外で書かれていると文字化けする。 httpd.conf の中でAddDefaultCharsetが設定されている場合、Offにするかコメントアウトしておくと良い。
AddDefaultCharset Off
Macで使われている HFS+ フォーマット上では大文字と小文字を区別しない。 このため.htaccessを .hTaccess または .Htaccess としてブラウザから閲覧すると中身が見えてしまう。 これを防ぐには、Apacheの設定ファイルhttpd.confを開いて、次のように .ht を .[Hh][Tt] に修正する。
<Files ~ "^\.[Hh][Tt]"> Order allow,deny Deny from all Satisfy All </Files>
これで .htaccess が見えなくなる。
▼参考サイト or 参考文献