In your register post type arguments, set rewrite
to true
and has_archive
to the path you want for the archive page (without leading slash):
'rewrite' => true,
'has_archive' => 'about-us/history'
As for the redirection, rather than getting all the way to the template, you could short-circuit the loading of single posts earlier and remove the need for the single cpt template:
function wpa_parse_query( $query ){
if( is_singular() && isset( $query->query_vars['cpt_history'] ) ){
wp_redirect( home_url() );
}
}
add_action( 'parse_query', 'wpa_parse_query' );