diff --git a/jupyterhub/handlers/base.py b/jupyterhub/handlers/base.py index bf9f877f..4669a49c 100644 --- a/jupyterhub/handlers/base.py +++ b/jupyterhub/handlers/base.py @@ -1526,14 +1526,30 @@ class UserRedirectHandler(BaseHandler): ) if url is None: user = self.current_user - user_url = url_path_join(user.url, path) + user_url = user.url + + if self.app.default_server_name: + user_url = url_path_join(user_url, self.app.default_server_name) + + user_url = url_path_join(user_url, path) if self.request.query: user_url = url_concat(user_url, parse_qsl(self.request.query)) - url = url_concat( - url_path_join(self.hub.base_url, "spawn", user.escaped_name), - {"next": user_url}, - ) + if self.app.default_server_name: + url = url_concat( + url_path_join( + self.hub.base_url, + "spawn", + user.escaped_name, + self.app.default_server_name, + ), + {"next": user_url}, + ) + else: + url = url_concat( + url_path_join(self.hub.base_url, "spawn", user.escaped_name), + {"next": user_url}, + ) self.redirect(url) diff --git a/jupyterhub/user.py b/jupyterhub/user.py index 4fca536a..4a3d6596 100644 --- a/jupyterhub/user.py +++ b/jupyterhub/user.py @@ -389,14 +389,9 @@ class User: Full name.domain/path if using subdomains, otherwise just my /base/url """ if self.settings.get('subdomain_host'): - url = '{host}{path}'.format(host=self.host, path=self.base_url) + return '{host}{path}'.format(host=self.host, path=self.base_url) else: - url = self.base_url - - if self.settings.get('default_server_name'): - return url_path_join(url, self.settings.get('default_server_name')) - else: - return url + return self.base_url def server_url(self, server_name=''): """Get the url for a server with a given name"""