Никакая это не магия, первый раз браузер находится по адресу
http://site.com/получив запрос dir/page.html - он обращается к директории относительно корня сайта, во-второй раз, находясь уже в
http://site.com/dir/ - он по такому-же запросу перейдет уже относительно директории в которой он находится теперь, тоесть относительно
http://site.com/dir/ он еще раз перейдет в dir/page.html, и попадет уже в
http://site.com/dir/dir/ и т.п.
Как решить? Например добавить слеш чтобы обращение всегда шло относительно корня, а-ля:
/dir/page.html