I am partially through implementing the functionality of SimpleHTTPServer.py in Scheme. I am having some good fun with HTTP request/response mechanism. While going through the above file, I came across this- " # redirect browser - doing basically what apache does" in the code".
Why is this redirection necessary in such a scenario?
Imagine you serve a page
that contains
On click, the user's browser would retrieve
http://mydomain.com/more.html
. Had you instead served(with the same content), the browser would retrieve
http://mydomain.com/bla/more.html
. To avoid this ambiguity, the redirection appends a slash if the URL points to a directory.It simplifies things to treat the trailing / as irrelevant when the user does a GET on a directory, so that (say)
http://www.foo.com/bar
andhttp://www.foo.com/bar/
have exactly the same effect. Simplest (though not fastest, see Souders' books;-) is to have the former cause a redirect to the latter.