Ciao, puoi usare il meta tag unavailable_after, in modo da avvisare prima la data di scadenza.
Se vuoi approdondire:
http://googleblog.blogspot.com/2007/07/robots-exclusion-protocol-now-with-even.html
E questo non esclude il 404, anzi, anzi lavorano bene insieme.
Nella pagina php basta che ci metti l'istruzione che aggiunge all'header il codice di errore 404 (http://php.net/manual/en/function.header.php).
@morgue86 said:
Inserendo il link comunque viene trovato l'evento.
La stragrande maggioranza dei tuoi utenti lo troverà.
In alcuni casi, per impostazioni del browser, al posto della tua pagina vedranno un errore generico di pagina non trovata.
Questo accade per esempio con alcuni telefoni cellulari, che per risparmiare costosi bytes da scaricare, appena trovano un errore come il 404 bloccano il download della pagina.
Se vuoi che sia accessibile pure a loro, allora ti consiglio di non mettere il 404 alle pagine eventi scaduti, bensì il meta tag noindex,follow.