diff --git a/IPython/html/notebook/handlers.py b/IPython/html/notebook/handlers.py
index 2f7b3d4..f9666a1 100644
--- a/IPython/html/notebook/handlers.py
+++ b/IPython/html/notebook/handlers.py
@@ -67,6 +67,8 @@ class NotebookRedirectHandler(IPythonHandler):
# otherwise, redirect to /files
# TODO: This should check if it's actually a file
url = url_path_join(self.base_project_url, 'files', path)
+ url = url_escape(url)
+ self.log.debug("Redirecting %s to %s", self.request.path, url)
self.redirect(url)
#-----------------------------------------------------------------------------
diff --git a/IPython/html/tree/handlers.py b/IPython/html/tree/handlers.py
index e2d854d..1ec33d5 100644
--- a/IPython/html/tree/handlers.py
+++ b/IPython/html/tree/handlers.py
@@ -19,7 +19,7 @@ import os
from tornado import web
from ..base.handlers import IPythonHandler
-from ..utils import url_path_join, path2url, url2path
+from ..utils import url_path_join, path2url, url2path, url_escape
from ..services.notebooks.handlers import _notebook_path_regex, _path_regex
#-----------------------------------------------------------------------------
@@ -36,7 +36,10 @@ class TreeHandler(IPythonHandler):
nbm = self.notebook_manager
if name is not None:
# is a notebook, redirect to notebook handler
- url = url_path_join(self.base_project_url, 'notebooks', path, name)
+ url = url_escape(url_path_join(
+ self.base_project_url, 'notebooks', path, name
+ ))
+ self.log.debug("Redirecting %s to %s", self.request.path, url)
self.redirect(url)
else:
if not nbm.path_exists(path=path):
@@ -54,8 +57,10 @@ class TreeRedirectHandler(IPythonHandler):
@web.authenticated
def get(self, path=''):
- url = url_path_join(self.base_project_url, 'tree', path).rstrip('/')
- self.log.debug("Redirecting %s to %s", self.request.uri, url)
+ url = url_escape(url_path_join(
+ self.base_project_url, 'tree', path.strip('/')
+ ))
+ self.log.debug("Redirecting %s to %s", self.request.path, url)
self.redirect(url)