From e2ddee8dd155f76dbb8326dae7d887bbe7492bcb Mon Sep 17 00:00:00 2001
From: Kai Reinhard <K.Reinhard@micromata.de>
Date: Sun, 18 Apr 2021 09:06:25 +0000
Subject: [PATCH] React reload works now: redirect to index.htlm

---
 borgbutler-server/src/main/kotlin/de/micromata/borgbutler/server/WebConfig.kt |   12 ++++++++++--
 1 files changed, 10 insertions(+), 2 deletions(-)

diff --git a/borgbutler-server/src/main/kotlin/de/micromata/borgbutler/server/WebConfig.kt b/borgbutler-server/src/main/kotlin/de/micromata/borgbutler/server/WebConfig.kt
index 8dccf14..b7f45b0 100644
--- a/borgbutler-server/src/main/kotlin/de/micromata/borgbutler/server/WebConfig.kt
+++ b/borgbutler-server/src/main/kotlin/de/micromata/borgbutler/server/WebConfig.kt
@@ -6,9 +6,7 @@
 import org.springframework.web.servlet.ViewResolver
 import org.springframework.web.servlet.config.annotation.*
 import org.springframework.web.servlet.view.InternalResourceViewResolver
-import java.io.File
 import java.nio.file.Paths
-import kotlin.io.path.Path
 
 
 private val log = KotlinLogging.logger {}
@@ -42,8 +40,18 @@
     }
 
     override fun addViewControllers(registry: ViewControllerRegistry) {
+        // https://stackoverflow.com/questions/39331929/spring-catch-all-route-for-index-html
         registry.addViewController("/")
             .setViewName("forward:/index.html")
+        // Map "/word", "/word/word", and "/word/word/word" - except for anything starting with "/api/..." or ending with
+        // a file extension like ".js" - to index.html. By doing this, the client receives and routes the url. It also
+        // allows client-side URLs to be bookmarked.
+        // Single directory level - no need to exclude "rest" (api)
+        registry.addViewController("/{x:[\\w\\-]+}")
+            .setViewName("forward:/index.html")
+        // Multi-level directory path, need to exclude "rest" on the first part of the path
+        registry.addViewController("/{x:^(?!rest$).*$}/**/{y:[\\w\\-]+}")
+            .setViewName("forward:/index.html")
     }
 
     override fun addCorsMappings(registry: CorsRegistry) {

--
Gitblit v1.10.0