diff --git a/src/main/java/com/googlesource/gerrit/plugins/xdocs/XDocServlet.java b/src/main/java/com/googlesource/gerrit/plugins/xdocs/XDocServlet.java
index bf0927b..d63502d 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/xdocs/XDocServlet.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/xdocs/XDocServlet.java
@@ -24,6 +24,7 @@
 import com.google.common.hash.Hashing;
 import com.google.common.net.HttpHeaders;
 import com.google.gerrit.common.data.PatchScript.FileMode;
+import com.google.gerrit.extensions.annotations.PluginName;
 import com.google.gerrit.extensions.restapi.AuthException;
 import com.google.gerrit.extensions.restapi.IdString;
 import com.google.gerrit.extensions.restapi.MethodNotAllowedException;
@@ -76,6 +77,7 @@
 
   public  static final String PATH_PREFIX = "/project/";
 
+  private final String pluginName;
   private final Provider<ReviewDb> db;
   private final ProjectControl.Factory projectControlFactory;
   private final ProjectCache projectCache;
@@ -88,6 +90,7 @@
 
   @Inject
   XDocServlet(
+      @PluginName String pluginName,
       Provider<ReviewDb> db,
       ProjectControl.Factory projectControlFactory,
       ProjectCache projectCache,
@@ -97,6 +100,7 @@
       FileTypeRegistry fileTypeRegistry,
       XDocProjectConfig.Factory cfgFactory,
       Formatters formatters) {
+    this.pluginName = pluginName;
     this.db = db;
     this.projectControlFactory = projectControlFactory;
     this.projectCache = projectCache;
@@ -114,7 +118,7 @@
     try {
       validateRequestMethod(req);
 
-      ResourceKey key = ResourceKey.fromPath(req.getPathInfo());
+      ResourceKey key = ResourceKey.fromPath(getEncodedPath(req));
       ProjectState state = getProject(key);
       XDocProjectConfig cfg = cfgFactory.create(state);
 
@@ -193,6 +197,15 @@
     }
   }
 
+  private String getEncodedPath(HttpServletRequest req) {
+    String path = req.getRequestURI();
+    String prefix = "/plugins/" + pluginName;
+    if (path.startsWith(prefix)) {
+      path = path.substring(prefix.length());
+    }
+    return path;
+  }
+
   private Resource getImageResource(Repository repo, DiffMode diffMode,
       ObjectId revId, ObjectId revIdB, String file) {
     ObjectId id = diffMode == DiffMode.NO_DIFF || diffMode == DiffMode.SIDEBYSIDE_A
