Is there a more elegant way to handling contribution pages that have ended?
This module might be what you need

The extension allows a default contribution page to be configured (by domain), and blocks disabling or deleting of this page. Browsers accessing a disabled contribution page are redirected to the default page.

or, now i reread your post :-), could be a good place to add a new feature since i think you are saying 'my pages are not disabled, they are just past their use-by-date'