うまいぼうぶろぐ

linuxとhttpdとperlのメモ

apacheのaliasディレクティブ

うっかり忘れてしまうのでmemo。特定のURLをドキュメントルート以外の場所にマップさせる。

Alias /log /var/www

とすると、http://servername/logは/var/www以下を参照する。ScriptAliasはAliasの機能に加えて、マップ先にcgi-scriptのハンドラを追加する。

ScriptAlias /cgi-bin /var/cgi-bin/

/cgi-bin以下のURLへのアクセスは/var/cgi-bin/以下にマップされて、かつ拡張子に関係なく、全てcgiスクリプトで動作する。
うっかりtest.cgi.bakなんていうファイルでバックアップを取っていたとしても、http://www.example.com/cgi-bin/test.cgi.bakcgiとして動作する。ScriptAliasの設定が無い(AddHandler cgi-script .cgiだけとか)場合は、.bakではcgiとして動作しないのでソース丸見えになる。/cgi-bin/以下にcgiファイルを置くことが推奨されている or /cbi-bin/以下しかcgiが動作しないように設定されているのはこのため。

追記

Alias /hoge /home/user/public_html/index.html

みたいに。ファイルにもマッピングできるらしい。知らなかった。