diff --git a/gitiles-servlet/src/main/java/com/google/gitiles/GitilesView.java b/gitiles-servlet/src/main/java/com/google/gitiles/GitilesView.java
index 05c31a7..1d45101 100644
--- a/gitiles-servlet/src/main/java/com/google/gitiles/GitilesView.java
+++ b/gitiles-servlet/src/main/java/com/google/gitiles/GitilesView.java
@@ -425,11 +425,7 @@
         url.append(repositoryName).append('/');
         break;
       case REVISION:
-        url.append(repositoryName).append("/+");
-        if (!getRevision().nameIsId()) {
-          url.append("show"); // Default for /+/master is +log.
-        }
-        url.append('/').append(revision.getName());
+        url.append(repositoryName).append("/+/").append(revision.getName());
         break;
       case PATH:
         url.append(repositoryName).append("/+/").append(revision.getName()).append('/')
@@ -445,13 +441,7 @@
         url.append('/').append(path);
         break;
       case LOG:
-        url.append(repositoryName).append("/+");
-        if (getRevision().nameIsId() || oldRevision != Revision.NULL || path != null) {
-         // Default for /+/c0ffee/(...) is +show.
-         // Default for /+/c0ffee..deadbeef(/...) is +diff.
-          url.append("log");
-        }
-        url.append('/');
+        url.append(repositoryName).append("/+log/");
         if (oldRevision != Revision.NULL) {
           url.append(oldRevision.getName()).append("..");
         }
diff --git a/gitiles-servlet/src/main/java/com/google/gitiles/ViewFilter.java b/gitiles-servlet/src/main/java/com/google/gitiles/ViewFilter.java
index 8874b1d..e7532ab 100644
--- a/gitiles-servlet/src/main/java/com/google/gitiles/ViewFilter.java
+++ b/gitiles-servlet/src/main/java/com/google/gitiles/ViewFilter.java
@@ -18,10 +18,6 @@
 import static com.google.common.base.Preconditions.checkNotNull;
 import static javax.servlet.http.HttpServletResponse.SC_NOT_FOUND;
 
-import org.eclipse.jgit.http.server.ServletUtils;
-import org.eclipse.jgit.http.server.glue.WrappedRequest;
-import org.eclipse.jgit.lib.Constants;
-
 import java.io.IOException;
 import java.util.Map;
 
@@ -30,6 +26,9 @@
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 
+import org.eclipse.jgit.http.server.ServletUtils;
+import org.eclipse.jgit.http.server.glue.WrappedRequest;
+
 /** Filter to parse URLs and convert them to {@link GitilesView}s. */
 public class ViewFilter extends AbstractHttpFilter {
   // TODO(dborowitz): Make this public in JGit (or implement getRegexGroup
@@ -147,14 +146,8 @@
       return command;
     } else if (result.getOldRevision() != null) {
       return CMD_DIFF;
-    }
-    Revision rev = result.getRevision();
-    if (rev.getPeeledType() != Constants.OBJ_COMMIT
-        || !path.isEmpty()
-        || result.getRevision().nameIsId()) {
-      return CMD_SHOW;
     } else {
-      return CMD_LOG;
+      return CMD_SHOW;
     }
   }
 }
diff --git a/gitiles-servlet/src/test/java/com/google/gitiles/GitilesViewTest.java b/gitiles-servlet/src/test/java/com/google/gitiles/GitilesViewTest.java
index a8a5c4f..cf246b9 100644
--- a/gitiles-servlet/src/test/java/com/google/gitiles/GitilesViewTest.java
+++ b/gitiles-servlet/src/test/java/com/google/gitiles/GitilesViewTest.java
@@ -134,12 +134,12 @@
     assertNull(view.getTreePath());
     assertTrue(HOST.getParameters().isEmpty());
 
-    assertEquals("/b/foo/bar/+show/master", view.toUrl());
+    assertEquals("/b/foo/bar/+/master", view.toUrl());
     assertEquals(
         ImmutableList.of(
             breadcrumb("host", "/b/?format=HTML"),
             breadcrumb("foo/bar", "/b/foo/bar/"),
-            breadcrumb("master", "/b/foo/bar/+show/master")),
+            breadcrumb("master", "/b/foo/bar/+/master")),
         view.getBreadcrumbs());
   }
 
@@ -166,7 +166,7 @@
         ImmutableList.of(
             breadcrumb("host", "/b/?format=HTML"),
             breadcrumb("foo/bar", "/b/foo/bar/"),
-            breadcrumb("master", "/b/foo/bar/+show/master"),
+            breadcrumb("master", "/b/foo/bar/+/master"),
             breadcrumb(".", "/b/foo/bar/+/master/")),
         view.getBreadcrumbs());
   }
@@ -194,7 +194,7 @@
         ImmutableList.of(
             breadcrumb("host", "/b/?format=HTML"),
             breadcrumb("foo/bar", "/b/foo/bar/"),
-            breadcrumb("master", "/b/foo/bar/+show/master"),
+            breadcrumb("master", "/b/foo/bar/+/master"),
             breadcrumb(".", "/b/foo/bar/+/master/"),
             breadcrumb("file", "/b/foo/bar/+/master/file")),
         view.getBreadcrumbs());
@@ -223,7 +223,7 @@
         ImmutableList.of(
             breadcrumb("host", "/b/?format=HTML"),
             breadcrumb("foo/bar", "/b/foo/bar/"),
-            breadcrumb("master", "/b/foo/bar/+show/master"),
+            breadcrumb("master", "/b/foo/bar/+/master"),
             breadcrumb(".", "/b/foo/bar/+/master/"),
             breadcrumb("path", "/b/foo/bar/+/master/path"),
             breadcrumb("to", "/b/foo/bar/+/master/path/to"),
@@ -353,12 +353,12 @@
     assertNull(view.getTreePath());
     assertTrue(HOST.getParameters().isEmpty());
 
-    assertEquals("/b/foo/bar/+/master", view.toUrl());
+    assertEquals("/b/foo/bar/+log/master", view.toUrl());
     assertEquals(
         ImmutableList.of(
             breadcrumb("host", "/b/?format=HTML"),
             breadcrumb("foo/bar", "/b/foo/bar/"),
-            breadcrumb("master", "/b/foo/bar/+/master")),
+            breadcrumb("master", "/b/foo/bar/+log/master")),
         view.getBreadcrumbs());
   }
 
@@ -413,7 +413,7 @@
         ImmutableList.of(
             breadcrumb("host", "/b/?format=HTML"),
             breadcrumb("foo/bar", "/b/foo/bar/"),
-            breadcrumb("master", "/b/foo/bar/+/master"),
+            breadcrumb("master", "/b/foo/bar/+log/master"),
             breadcrumb("path", "/b/foo/bar/+log/master/path"),
             breadcrumb("to", "/b/foo/bar/+log/master/path/to"),
             breadcrumb("a", "/b/foo/bar/+log/master/path/to/a"),
diff --git a/gitiles-servlet/src/test/java/com/google/gitiles/ViewFilterTest.java b/gitiles-servlet/src/test/java/com/google/gitiles/ViewFilterTest.java
index be0978d..800bd38 100644
--- a/gitiles-servlet/src/test/java/com/google/gitiles/ViewFilterTest.java
+++ b/gitiles-servlet/src/test/java/com/google/gitiles/ViewFilterTest.java
@@ -66,8 +66,8 @@
     String hexBranch = hex.substring(0, 10);
     repo.branch(hexBranch).commit().create();
 
-    assertEquals(Type.LOG, getView("/repo/+/master").getType());
-    assertEquals(Type.LOG, getView("/repo/+/" + hexBranch).getType());
+    assertEquals(Type.REVISION, getView("/repo/+/master").getType());
+    assertEquals(Type.REVISION, getView("/repo/+/" + hexBranch).getType());
     assertEquals(Type.REVISION, getView("/repo/+/" + hex).getType());
     assertEquals(Type.REVISION, getView("/repo/+/" + hex.substring(0, 7)).getType());
     assertEquals(Type.PATH, getView("/repo/+/master/").getType());
