diff --git a/src/aphront/configuration/AphrontApplicationConfiguration.php b/src/aphront/configuration/AphrontApplicationConfiguration.php
--- a/src/aphront/configuration/AphrontApplicationConfiguration.php
+++ b/src/aphront/configuration/AphrontApplicationConfiguration.php
@@ -14,7 +14,7 @@
   abstract public function getURIMap();
   abstract public function buildRequest();
   abstract public function build404Controller();
-  abstract public function buildRedirectController($uri);
+  abstract public function buildRedirectController($uri, $external);
 
   final public function setRequest(AphrontRequest $request) {
     $this->request = $request;
@@ -96,7 +96,10 @@
         $https_uri = $request->getRequestURI();
         $https_uri->setDomain($request->getHost());
         $https_uri->setProtocol('https');
-        return $this->buildRedirectController($https_uri);
+
+        // In this scenario, we'll be redirecting to HTTPS using an absolute
+        // URI, so we need to permit an external redirect.
+        return $this->buildRedirectController($https_uri, true);
       }
     }
 
@@ -188,7 +191,9 @@
 
         if ($controller && !$request->isHTTPPost()) {
           $slash_uri = $request->getRequestURI()->setPath($path.'/');
-          return $this->buildRedirectController($slash_uri);
+
+          $external = strlen($request->getRequestURI()->getDomain());
+          return $this->buildRedirectController($slash_uri, $external);
         }
       }
       return $this->build404Controller();
diff --git a/src/aphront/configuration/AphrontDefaultApplicationConfiguration.php b/src/aphront/configuration/AphrontDefaultApplicationConfiguration.php
--- a/src/aphront/configuration/AphrontDefaultApplicationConfiguration.php
+++ b/src/aphront/configuration/AphrontDefaultApplicationConfiguration.php
@@ -300,11 +300,12 @@
     return array(new Phabricator404Controller($this->getRequest()), array());
   }
 
-  public function buildRedirectController($uri) {
+  public function buildRedirectController($uri, $external) {
     return array(
       new PhabricatorRedirectController($this->getRequest()),
       array(
         'uri' => $uri,
+        'external' => $external,
       ));
   }
 
diff --git a/src/applications/base/controller/PhabricatorRedirectController.php b/src/applications/base/controller/PhabricatorRedirectController.php
--- a/src/applications/base/controller/PhabricatorRedirectController.php
+++ b/src/applications/base/controller/PhabricatorRedirectController.php
@@ -3,6 +3,7 @@
 final class PhabricatorRedirectController extends PhabricatorController {
 
   private $uri;
+  private $allowExternal;
 
   public function shouldRequireLogin() {
     return false;
@@ -14,10 +15,13 @@
 
   public function willProcessRequest(array $data) {
     $this->uri = $data['uri'];
+    $this->allowExternal = idx($data, 'external', false);
   }
 
   public function processRequest() {
-    return id(new AphrontRedirectResponse())->setURI($this->uri);
+    return id(new AphrontRedirectResponse())
+      ->setURI($this->uri)
+      ->setIsExternal($this->allowExternal);
   }
 
 }