diff --git a/legacy.py b/legacy.py
new file mode 100644
index 0000000000000000000000000000000000000000..0fcfab26c10643448645ac47e5e544caa3901add
--- /dev/null
+++ b/legacy.py
@@ -0,0 +1,38 @@
+from server import *
+
+def legacy_index():
+	# handle legacy urls...
+	if 'course' in request.args:
+		return redirect(url_for('course', handle=request.args['course']),code=302)
+	if 'view' in request.args:
+		if (request.args['view'] == 'player') and ('lectureid' in request.args) :
+			courses = query('SELECT courses.handle FROM courses JOIN lectures ON courses.id = lectures.course_id WHERE lectures.id = ?', request.args['lectureid'])
+			if not courses:
+				return "Not found", 404
+			return redirect(url_for('lecture', course=courses[0]['handle'], id=request.args['lectureid']),code=302)
+	return None
+
+@app.route('/site/')
+@app.route('/site/<string:phpfile>')
+def legacy(phpfile=None):
+	if phpfile=='embed.php' and ('lecture' in request.args):
+		courses = query('SELECT courses.handle FROM courses JOIN lectures ON courses.id = lectures.course_id WHERE lectures.id = ?', request.args['lecture'])
+		if not courses:
+			return render_endpoint('index', 'Diese Seite existiert nicht!'), 404
+		return redirect(url_for('embed', course=courses[0]['handle'], id=request.args['lecture']),code=302)
+	if phpfile=='embed.php' and ('vid' in request.args):
+		lectures = query('SELECT lecture_id FROM videos WHERE id = ?', request.args['vid'])
+		if not lectures:
+			return render_endpoint('index', 'Dieses Videos existiert nicht!'), 404
+		courses = query('SELECT courses.handle FROM courses JOIN lectures ON courses.id = lectures.course_id WHERE lectures.id = ?', lectures[0]['lecture_id'])
+		if not courses:
+			return render_endpoint('index', 'Diese Seite existiert nicht!'), 404
+		return redirect(url_for('embed', course=courses[0]['handle'], id=lectures[0]['lecture_id']),code=302)
+	if phpfile=='feed.php' and ('all' in request.args):
+		return redirect(url_for('feed'),code=302)
+	if phpfile=='feed.php' and ('newcourses' in request.args):
+		return redirect(url_for('courses_feed'),code=302)
+	if phpfile=='feed.php':
+		return redirect(url_for('feed', handle=request.args.copy().popitem()[0]),code=302)
+	print("Unknown legacy url:",request.url)
+	return redirect(url_for('index'),code=302)
diff --git a/server.py b/server.py
index 63cdb60d90cea0838715eddf859ba84e61b43822..ef71a9a9741b9f44fe8d17d19a0b947799a683b7 100644
--- a/server.py
+++ b/server.py
@@ -15,6 +15,7 @@ from ipaddress import ip_address, ip_network
 import math
 import locale
 import base64
+import json
 
 locale.setlocale(locale.LC_ALL, 'de_DE.utf8')
 
@@ -74,6 +75,7 @@ if not config.get('SECRET_KEY', None):
 
 from db import query, modify, show, searchquery
 from ldap import ldapauth
+from legacy import legacy_index
 
 mod_endpoints = []
 
@@ -176,14 +178,9 @@ def genlive(streams):
 @register_navbar('Home', icon='home')
 def index():
 	# handle legacy urls...
-	if 'course' in request.args:
-		return redirect(url_for('course', handle=request.args['course']),code=302)
-	if 'view' in request.args:
-		if (request.args['view'] == 'player') and ('lectureid' in request.args) :
-			courses = query('SELECT courses.handle FROM courses JOIN lectures ON courses.id = lectures.course_id WHERE lectures.id = ?', request.args['lectureid'])
-			if not courses:
-				return "Not found", 404
-			return redirect(url_for('lecture', course=courses[0]['handle'], id=request.args['lectureid']),code=302)
+	result = legacy_index()
+	if result:
+		return result
 
 	start = date.today()
 	end = start + timedelta(days=7)
@@ -475,34 +472,6 @@ def sitemap():
 
 	return Response(render_template('sitemap.xml', pages=pages), 200, {'Content-Type': 'application/atom+xml'} )
 
-
-@app.route('/site/')
-@app.route('/site/<string:phpfile>')
-def legacy(phpfile=None):
-	if phpfile=='embed.php' and ('lecture' in request.args):
-		courses = query('SELECT courses.handle FROM courses JOIN lectures ON courses.id = lectures.course_id WHERE lectures.id = ?', request.args['lecture'])
-		if not courses:
-			return render_endpoint('index', 'Diese Seite existiert nicht!'), 404
-		return redirect(url_for('embed', course=courses[0]['handle'], id=request.args['lecture']),code=302)
-	if phpfile=='embed.php' and ('vid' in request.args):
-		lectures = query('SELECT lecture_id FROM videos WHERE id = ?', request.args['vid'])
-		if not lectures:
-			return render_endpoint('index', 'Dieses Videos existiert nicht!'), 404
-		courses = query('SELECT courses.handle FROM courses JOIN lectures ON courses.id = lectures.course_id WHERE lectures.id = ?', lectures[0]['lecture_id'])
-		if not courses:
-			return render_endpoint('index', 'Diese Seite existiert nicht!'), 404
-		return redirect(url_for('embed', course=courses[0]['handle'], id=lectures[0]['lecture_id']),code=302)
-	if phpfile=='feed.php' and ('all' in request.args):
-		return redirect(url_for('feed'),code=302)
-	if phpfile=='feed.php' and ('newcourses' in request.args):
-		return redirect(url_for('courses_feed'),code=302)
-	if phpfile=='feed.php':
-		return redirect(url_for('feed', handle=request.args.copy().popitem()[0]),code=302)
-	print("Unknown legacy url:",request.url)
-	return redirect(url_for('index'),code=302)
-
-import json
-
 @app.route('/internal/dbstatus')
 @register_navbar('DB-Status', icon='ok')
 @mod_required