Hola:
Lo que pasa es que la primera vez estás leyendo el directorio $dir = "dir1".
Los directorios que encuentres dentro de "dir1" deben ser llamados por la ruta "$dir/$file".
Código PHP:
echo "<img src='images/folder.gif' width=20><a href='$_SERVER[PHP_SELF]?dir=$dir/$file'>$file</a><br>";
Saludos