diff --git a/app/controllers/course/go.php b/app/controllers/course/go.php
index 400c44a4c84e34ebb7df72e3241fdf280bf15bad..83569133b0c391e5228f848ef318336bb86c8222 100644
--- a/app/controllers/course/go.php
+++ b/app/controllers/course/go.php
@@ -46,13 +46,16 @@ class Course_GoController extends AuthenticatedController
 
         // gibt es eine Anweisung zur Umleitung?
         $redirect_to = Request::get('redirect_to');
-        if ($redirect_to) {
+        if (
+            $redirect_to
+            && !(
+                str_starts_with($redirect_to, '#')
+                || str_starts_with($redirect_to, '?')
+            )
+        ) {
             if (!is_internal_url($redirect_to)) {
                 throw new Exception('Invalid redirection');
             }
-            if (str_starts_with($redirect_to, '#')) {
-                $redirect_to = 'dispatch.php/course/go' . $redirect_to;
-            }
             $this->redirect(URLHelper::getURL($redirect_to, ['cid' => $course_id]));
             return;
         }
@@ -62,7 +65,7 @@ class Course_GoController extends AuthenticatedController
         if (Navigation::hasItem("/course")) {
             foreach (Navigation::getItem("/course")->getSubNavigation() as $index => $navigation) {
                 if ($index !== 'admin') {
-                    $this->redirect(URLHelper::getURL($navigation->getURL()));
+                    $this->redirect(URLHelper::getURL($navigation->getURL() . $redirect_to));
                     return;
                 }
             }