WordPress CPT slug and page slug conflicts

As you don’t need the CPT archvie, the easiest way to use example.com/new-site to open a page, and example.com/new-site/post-slug to open single posts of “new-site” post type, is to declare has_archive => false when registering the CPT:

add_action( 'init', 'cyb_register_cpt' );
function cyb_register_cpt() {
    $args = array(
      // .....
      'has_archive' => false
    );
    register_post_type( 'new-site', $args );
}

PD: Remember to flush the rewrite rules:

add_action( 'init', 'cyb_register_cpt' );
function cyb_register_cpt() {
    $args = array(
      // .....
      'has_archive' => false
    );
    register_post_type( 'new-site', $args );
}

register_activation_hook( __FILE__, function () {
    cyb_register_cpt();
    flush_rewrite_rules();
} );

register_deactivation_hook( __FILE__, function () {
    flush_rewrite_rules();
} );