diff --git a/plugin/src/main/java/de/ids_mannheim/korap/plkexport/IdsExportService.java b/plugin/src/main/java/de/ids_mannheim/korap/plkexport/IdsExportService.java
index 002e279..6eb5663 100644
--- a/plugin/src/main/java/de/ids_mannheim/korap/plkexport/IdsExportService.java
+++ b/plugin/src/main/java/de/ids_mannheim/korap/plkexport/IdsExportService.java
@@ -110,6 +110,7 @@
         String scheme = properties.getProperty("api.scheme", "https");
         String port = properties.getProperty("api.port", "8089");
         String host = properties.getProperty("api.host", "localhost");
+        String path = properties.getProperty("api.path", "");
 
         UriBuilder uri = UriBuilder.fromPath("/api/v1.0/search")
             .host(host)
@@ -120,6 +121,10 @@
             .queryParam("ql", ql)
             .queryParam("cutoff", 1)
             ;
+
+        if (path != "") {
+            uri = uri.path(path);
+        };
         
         if (il != null) {
             uri = uri.queryParam("count", hitc);
@@ -127,7 +132,7 @@
 
         else {
             uri = uri.queryParam("count", ExWSConf.MAX_EXP_LIMIT);
-        }
+        };
 
         String resp;
         try {
@@ -205,15 +210,19 @@
         String scheme = properties.getProperty("asset.scheme", "https");
         String port = properties.getProperty("asset.port", "");
         String host = properties.getProperty("asset.host", "korap.ids-mannheim.de");
+        String path = properties.getProperty("asset.path", "");
 
         UriBuilder uri = UriBuilder.fromPath("")
             .host(host)
-            .scheme(scheme)
-            ;
+            .scheme(scheme);
+
+        if (path != "") {
+            uri = uri.path(path);
+        };
 
         if (port != "") {
             uri = uri.port(Integer.parseInt(port));
-        }
+        };
 
         templateData.put("assetPath", uri.build());
 
diff --git a/plugin/src/main/java/de/ids_mannheim/korap/plkexport/PluginServer.java b/plugin/src/main/java/de/ids_mannheim/korap/plkexport/PluginServer.java
index cb5a71c..8bbd366 100644
--- a/plugin/src/main/java/de/ids_mannheim/korap/plkexport/PluginServer.java
+++ b/plugin/src/main/java/de/ids_mannheim/korap/plkexport/PluginServer.java
@@ -59,7 +59,8 @@
                 "ApiServer expected under: " +
                 properties.getProperty("api.scheme") +
                 "://" +
-                properties.getProperty("api.host")+ ":" +
+                properties.getProperty("api.host") +
+                properties.getProperty("api.path") + ":" +
                 properties.getProperty("api.port")
                 );
             jettyServer.join();
diff --git a/plugin/src/test/java/de/ids_mannheim/korap/plkexport/IdsExportServiceTest.java b/plugin/src/test/java/de/ids_mannheim/korap/plkexport/IdsExportServiceTest.java
index ca63a0a..df2aa5a 100644
--- a/plugin/src/test/java/de/ids_mannheim/korap/plkexport/IdsExportServiceTest.java
+++ b/plugin/src/test/java/de/ids_mannheim/korap/plkexport/IdsExportServiceTest.java
@@ -156,6 +156,29 @@
     }
 
     @Test
+    public void testFormHTML2 () {
+        Properties properties = ExWSConf.properties(null);
+        String hostTemp = properties.getProperty("asset.host");
+        String pathTemp = properties.getProperty("asset.path");
+        properties.setProperty("asset.host", "ids-mannheim.example");
+        properties.setProperty("asset.path", "/instance/test");
+        
+        Response responsehtml = target("/export").request()
+                .get();
+        assertEquals("HTTP Code",
+                Status.OK.getStatusCode(), responsehtml.getStatus());
+        String str = responsehtml.readEntity(String.class);
+        assertTrue("HTTP Body", str.contains("<title>Export</title>"));
+        assertTrue("Assets", str.contains("<script src=\"https://ids-mannheim.example/instance/test/js"));
+        assertTrue("Assets", str.contains("<link href=\"https://ids-mannheim.example/instance/test/css"));
+        assertFalse("Errors", str.contains("dynCall("));
+
+        properties.setProperty("asset.host", hostTemp);
+        properties.setProperty("asset.path", pathTemp != null ? pathTemp : "");
+    }
+
+    
+    @Test
     public void testJS () {
         Response responsejs = target("/export.js").request()
                 .get();
@@ -306,7 +329,9 @@
 
     @Test
     public void testExportWsProxyProblem () {
-        ExWSConf.properties(null).setProperty("api.port", String.valueOf(mockServer.getPort() + 11));
+        Properties properties = ExWSConf.properties(null);
+        String portTemp = properties.getProperty("api.port");
+        properties.setProperty("api.port", String.valueOf(mockServer.getPort() + 11));
 
         String filenamej = "dateiJson";
         MultivaluedHashMap<String, String> frmap = new MultivaluedHashMap<String, String>();
@@ -327,6 +352,7 @@
 
         String str = responsejson.readEntity(String.class);
         assertTrue("HTTP Body", str.contains("P.log(502, 'Unable to reach Backend');"));
+        properties.setProperty("api.port", portTemp);
     };
 
     
