diff --git a/IPython/frontend/html/notebook/handlers.py b/IPython/frontend/html/notebook/handlers.py
index 06bfa88..c4a7551 100644
--- a/IPython/frontend/html/notebook/handlers.py
+++ b/IPython/frontend/html/notebook/handlers.py
@@ -208,7 +208,7 @@ class LoginHandler(AuthenticatedHandler):
 
     def _render(self, message=None):
         self.render('login.html',
-                next=self.get_argument('next', default='/'),
+                next=self.get_argument('next', default=self.application.ipython_app.base_project_url),
                 read_only=self.read_only,
                 logged_in=self.logged_in,
                 login_available=self.login_available,
@@ -218,7 +218,7 @@ class LoginHandler(AuthenticatedHandler):
 
     def get(self):
         if self.current_user:
-            self.redirect(self.get_argument('next', default='/'))
+            self.redirect(self.get_argument('next', default=self.application.ipython_app.base_project_url))
         else:
             self._render()
 
@@ -231,7 +231,7 @@ class LoginHandler(AuthenticatedHandler):
                 self._render(message={'error': 'Invalid password'})
                 return
 
-        self.redirect(self.get_argument('next', default='/'))
+        self.redirect(self.get_argument('next', default=self.application.ipython_app.base_project_url))
 
 
 class LogoutHandler(AuthenticatedHandler):
diff --git a/IPython/frontend/html/notebook/notebookapp.py b/IPython/frontend/html/notebook/notebookapp.py
index 7073ed9..398d67e 100644
--- a/IPython/frontend/html/notebook/notebookapp.py
+++ b/IPython/frontend/html/notebook/notebookapp.py
@@ -140,15 +140,6 @@ class NotebookWebApplication(web.Application):
             (r"/clusters/%s/%s" % (_profile_regex, _cluster_action_regex), ClusterActionHandler),
             (r"/clusters/%s" % _profile_regex, ClusterProfileHandler),
         ]
-        settings = dict(
-            template_path=os.path.join(os.path.dirname(__file__), "templates"),
-            static_path=os.path.join(os.path.dirname(__file__), "static"),
-            cookie_secret=os.urandom(1024),
-            login_url="/login",
-        )
-
-        # allow custom overrides for the tornado web app.
-        settings.update(settings_overrides)
 
         # Python < 2.6.5 doesn't accept unicode keys in f(**kwargs), and
         # base_project_url will always be unicode, which will in turn
@@ -160,6 +151,16 @@ class NotebookWebApplication(web.Application):
         # and thus guaranteed to be ASCII: 'héllo' is really 'h%C3%A9llo'.
         base_project_url = py3compat.unicode_to_str(base_project_url, 'ascii')
         
+        settings = dict(
+            template_path=os.path.join(os.path.dirname(__file__), "templates"),
+            static_path=os.path.join(os.path.dirname(__file__), "static"),
+            cookie_secret=os.urandom(1024),
+            login_url="%s/login"%(base_project_url.rstrip('/')),
+        )
+
+        # allow custom overrides for the tornado web app.
+        settings.update(settings_overrides)
+
         # prepend base_project_url onto the patterns that we match
         new_handlers = []
         for handler in handlers:
diff --git a/IPython/frontend/html/notebook/static/js/loginwidget.js b/IPython/frontend/html/notebook/static/js/loginwidget.js
index 288772a..1277180 100644
--- a/IPython/frontend/html/notebook/static/js/loginwidget.js
+++ b/IPython/frontend/html/notebook/static/js/loginwidget.js
@@ -29,10 +29,10 @@ var IPython = (function (IPython) {
     LoginWidget.prototype.bind_events = function () {
         var that = this;
         this.element.find("button#logout").click(function () {
-            window.location = "/logout";
+            window.location = "logout";
         });
         this.element.find("button#login").click(function () {
-            window.location = "/login";
+            window.location = "login";
         });
     };
 
diff --git a/IPython/frontend/html/notebook/templates/login.html b/IPython/frontend/html/notebook/templates/login.html
index 34f2a0e..6c436b0 100644
--- a/IPython/frontend/html/notebook/templates/login.html
+++ b/IPython/frontend/html/notebook/templates/login.html
@@ -16,7 +16,7 @@
 <div id="main_app">
 
     {% if login_available %}
-    <form action="/login?next={{url_escape(next)}}" method="post">
+    <form action="login?next={{url_escape(next)}}" method="post">
         Password: <input type="password" class='ui-widget ui-widget-content' name="password" id="password_input">
         <input type="submit" value="Log in" id="login_submit">
     </form>
diff --git a/IPython/frontend/html/notebook/templates/logout.html b/IPython/frontend/html/notebook/templates/logout.html
index e31f0ac..e27036f 100644
--- a/IPython/frontend/html/notebook/templates/logout.html
+++ b/IPython/frontend/html/notebook/templates/logout.html
@@ -23,9 +23,9 @@
     {% end %}
 
     {% if read_only or not login_available %}
-    Proceed to the <a href="/">dashboard</a>.
+    Proceed to the <a href="">dashboard</a>.
     {% else %}
-    Proceed to the <a href="/login">login page</a>.
+    Proceed to the <a href="login">login page</a>.
     {% end %}