I want to preserve an old page on a site (long deleted) for link value, but the filename uses underscores. The page can be re-created but only with hyphens (underscores are not supported in the CMS). Will a 301 redirect solve this or not?
This might be a better job for a rewrite rather than a redirect.
A rewrite will mean the URL looks the same in the user's address bar as it always did. Since your CMS is probably using rewrites already as Lucy said, you just add one.
Let's say your page is
The CMS will let you create example.com/my-great-page
But in an case, it's rewriting this to
So you could
redirect my-great-page to my_great_page
then rewrite my_great_page to index.php/p=my-great-page
That shouldn't cause an infinite loop. The key question is whether you can control the output of the link to that page. If your CMS is going to force you to show links with underscores, you could have a duplicate content problem. But if you can manually create the link, the above should work and still preserve the original URL.