Problem is that the function you use run after http header are sent, so it can't redirect.

You have to use another way.

Setup the menu using doing-nothing function, just like `'__return_false'`, and then use another function to redirect to home page if the `$_GET['page']` is = to your menu slug on admin init (before headers are sent):

    add_action('admin_menu', 'register_web_menu_page');
    function register_web_menu_page() {
        add_menu_page('View My Website', 'View My Website', 'add_users', 'web_menu_page', '__return_false', '', null, 9); 
    }
    
    add_action('admin_init', 'redirect_to_site', 1);
    function redirect_to_site() {
    	if ( isset($_GET['page']) && $_GET['page'] == 'web_menu_page' ) {
          wp_redirect( home_url() );
          exit();
    	}
    }