diff --git a/.gitignore b/.gitignore
index 79eb93b09b6e26d831a4c8fad8592c6af42c8146..d88fa7776dab98ac8f8e2e2fda97f7eaf19b1193 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1 +1,2 @@
-.htaccess
\ No newline at end of file
+.htaccess
+.idea
diff --git a/lib/scripts.js b/lib/scripts.js
index 76dc09a284c869599c8f03bfbffb2a29fc21dc32..06b09770b895c2b0e1edc2e6b6bc3976688f4bc4 100644
--- a/lib/scripts.js
+++ b/lib/scripts.js
@@ -1,20 +1,45 @@
+
+/**
+ * Open the menu, when click on the menu header button
+ */
 function openMenu() {
-	
+
 	var menu = document.querySelector("header nav ul");
-	
 	var maxHeight = (menu.childElementCount * 2 + 1) + "rem";
-	
+
 	if (menu.style.height != maxHeight) {
-		
 		menu.style.height = maxHeight;
-		
+
 	} else {
-		
 		menu.style.height = "0rem";
-		
 	}
-	
 }
-
 document.querySelector("header nav button").addEventListener("click", openMenu);
 
+/**
+ * Detect if URL has a Cesium pattern (like '#/app/xxx'), then redirect to https://demo.cesium.app.
+ * (Useful for OLD links http://g1.duniter.fr/#/app/xxx )
+ */
+function detectCesiumHash() {
+	// Workaround to add String.startsWith() if not present
+	if (typeof String.prototype.startsWith !== 'function') {
+		console.debug("Adding String.prototype.startsWith() -> was missing on this platform");
+		String.prototype.startsWith = function (prefix, position) {
+			return this.indexOf(prefix, position) === 0;
+		};
+	}
+
+	console.debug("[app] Trying to detect Cesium hash in '#/app/' in URL...");
+	try {
+		var hash = window.location.hash;
+		if (hash && hash.startsWith('#/app/')) {
+			var demoUrl = "https://demo.cesium.app/" + hash;
+			console.debug("[app] Cesium hash detected! Redirect to: " + demoUrl);
+			window.location = demoUrl;
+		}
+	} catch (err) {
+		console.error(err);
+	}
+}
+
+window.addEventListener("load", detectCesiumHash);