diff --git a/src/applications/project/query/PhabricatorProjectQuery.php b/src/applications/project/query/PhabricatorProjectQuery.php
--- a/src/applications/project/query/PhabricatorProjectQuery.php
+++ b/src/applications/project/query/PhabricatorProjectQuery.php
@@ -9,6 +9,7 @@
   private $slugs;
   private $slugNormals;
   private $slugMap;
+  private $allSlugs;
   private $names;
   private $nameTokens;
   private $icons;
@@ -169,10 +170,19 @@
   protected function willExecute() {
     $this->slugMap = array();
     $this->slugNormals = array();
+    $this->allSlugs = array();
     if ($this->slugs) {
       foreach ($this->slugs as $slug) {
-        $normal = PhabricatorSlug::normalizeProjectSlug($slug);
-        $this->slugNormals[$slug] = $normal;
+        if (PhabricatorSlug::isValidProjectSlug($slug)) {
+          $normal = PhabricatorSlug::normalizeProjectSlug($slug);
+          $this->slugNormals[$slug] = $normal;
+          $this->allSlugs[$normal] = $normal;
+        }
+
+        // NOTE: At least for now, we query for the normalized slugs but also
+        // for the slugs exactly as entered. This allows older projects with
+        // slugs that are no longer valid to continue to work.
+        $this->allSlugs[$slug] = $slug;
       }
     }
   }
@@ -380,7 +390,7 @@
       $where[] = qsprintf(
         $conn,
         'slug.slug IN (%Ls)',
-        $this->slugNormals);
+        $this->allSlugs);
     }
 
     if ($this->names !== null) {
@@ -625,13 +635,17 @@
     // else.
     $unknown = $this->slugNormals;
     foreach ($unknown as $input => $normal) {
-      if (!isset($primary_map[$normal])) {
+      if (isset($primary_map[$input])) {
+        $match = $input;
+      } else if (isset($primary_map[$normal])) {
+        $match = $normal;
+      } else {
         continue;
       }
 
       $this->slugMap[$input] = array(
-        'slug' => $normal,
-        'projectPHID' => $primary_map[$normal]->getPHID(),
+        'slug' => $match,
+        'projectPHID' => $primary_map[$match]->getPHID(),
       );
 
       unset($unknown[$input]);
@@ -658,13 +672,17 @@
     // Link up any slugs we were not able to link up earlier.
     $extra_map = mpull($slugs, 'getProjectPHID', 'getSlug');
     foreach ($unknown as $input => $normal) {
-      if (!isset($extra_map[$normal])) {
+      if (isset($extra_map[$input])) {
+        $match = $input;
+      } else if (isset($extra_map[$normal])) {
+        $match = $normal;
+      } else {
         continue;
       }
 
       $this->slugMap[$input] = array(
-        'slug' => $normal,
-        'projectPHID' => $extra_map[$normal],
+        'slug' => $match,
+        'projectPHID' => $extra_map[$match],
       );
 
       unset($unknown[$input]);