Override specific routing from a core module
You can override route details in a route subscriber:

src/Routing/RouteSubscriber.php:

namespace Drupal\example\Routing;

use Drupal\Core\Routing\RouteSubscriberBase;
use Symfony\Component\Routing\RouteCollection;

/**
 * Listens to the dynamic route events.
 */
class RouteSubscriber extends RouteSubscriberBase {

  /**
   * {@inheritdoc}
   */
  protected function alterRoutes(RouteCollection $collection) {
    if ($route = $collection-&gt;get('forum.index')) {
      $route-&gt;setRequirement('_user_is_logged_in', 'TRUE');
    }
  }

}


example.services.yml:

services:
  example.route_subscriber:
    class: Drupal\example\Routing\RouteSubscriber
    tags:
      - { name: event_subscriber }


See Altering existing routes and adding new routes based on dynamic ones

If you want you can also replace the core classes with your own classes. You can have multiple routes for one class. Then you don't need a redirect.