Advanced Code Golf - Write a small HTTP server
Bash+netcat: 354 characters

Two script files are used.
No URL decoding, thus file names with spaces and special characters not supported.
Single threaded, so concurrent requests may fail.
Tested on Linux, works nicely with Firefox and Opera.

webserver.sh (33 characters):
while :;do nc -lp36895 -e./w;done

w (321 characters):
read m p v
p=/var/www$p
t=text/plain
[[ -r $p ]]||s='500 Server Error'
[[ -e $p ]]||s='404 Not Found'
[[ $m != GET ]]&amp;&amp;s='405 Not Supported'
[[ $s||-d $p ]]||case ${p##*.} in
txt);;html)t=text/html;;*)t=application/octet-stream;;esac
echo &quot;$v ${s-200 Ok}
Content-Type:$t
&quot;
[[ $s ]]&amp;&amp;echo $s||{ [[ -d $p ]]&amp;&amp;echo||cat $p;}

Sample run:
bash-4.2$ ./webserver.sh 

Sample visit (Firefox 19.0):