Is it possible to view 'Expired' entrys on the front end? I have a site with 10000 events which need to expire once they have happened, the main reason for this is to keep things tidy in the CP.

We need users to view events that they have completed after they have expired.

Is there an easy way to render these entries on the front end, without creating a custom route and changing the URL??

Getting the listing is easy enough:

done: user.eventsDoing.date('&lt;'~ now|date('Y-m-d') ).order('date desc').status('expired')
I don't think you can enable the default Entry Routing for expired entries. So you need to add a custom route.

To keep your current URLs, try to rebuild the default Entry Route with a custom one:

news/{slug}  →  news/_entry

Expired entries shouldn't return 404 now any more and load your entry template. You now have to get the Entry Model manually though:

{% set entry = craft.entries.section('news').slug(slug).status('live, expired').first() %}