The following approach works for me. Note that you have to use the JSTL core taglib redirect and not the jsp redirect in order for this to work (as the jsp also expires).
In your FacesConfig.xml you put the following:
javax.faces.application.ViewExpiredException
/sessionExpired.jsf
sessionExpired.jsp:
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
You can also use this approach for other error types or exceptions. For example the element contains a mapping between an error code or exception type and the path of a resource in the web application.:
400
/400.html
or element contains a fully qualified class name of a Java exception type.
javax.servlet.ServletException
/servlet/ErrorDisplay