not real clear on what you are doing, is there a repo to look at?
Maybe you did a a permalink in the defaults in the config that is just /links/ and so they are all getting that - maybe it needs to be /links/:name or something similar - I don’t use defaults so I am not real sure on the formatting, but maybe it is doing what you are telling it to, rather than what you want.
My comment about the for loop is that the thing you say after for needs to be the same thing you use to call the different things like title or url. Your second example is correct, first one not so much. Doesn’t matter if it is item, link or any other word you want to use, but you then need to use that same word to call the objects(?) you want. I like item as it is generic, often you will see people use post and then people end up thinking that post.title is actually a thing when it is not (except in a for loop with post as the key(?)).
I think this is a problem - every collection item will have the url set to /links/ so if there is more than one item they will overwrite each other. You need something else in the path to make it unique, something like /links/:name though I am not sure that is the correct formatting.
If that isn’t the problem, is there a link to a page on the rendered site that shows the issue? like what is the output of the for loop?