-L returns true if the “file” exists and is a symbolic link (the linked file may or may not exist). You want -f (returns true if file exists and is a regular file) or maybe just -e (returns true if file exists regardless of type).
According to the GNU manpage, -h is identical to -L, but according to the BSD manpage, it should not be used:
-h fileTrue if file exists and is a symbolic link. This operator is retained for compatibility with previous versions of this program. Do not rely on its existence; use -L instead.