diff --git a/.htaccess b/.htaccess
index fa24a060ae7e5730d1ebd8aaccad939411216459..f782cf9c008a84c36305a8757fde5bc5c007a4ad 100755
--- a/.htaccess
+++ b/.htaccess
@@ -8,5 +8,4 @@
 
 RewriteEngine On
 RewriteRule "\.(css|js|eot|ttf|woff|woff2|svg|ico|png)$" - [L]
-RewriteRule "^simplesaml/" - [L]
-RewriteRule ^ dist/index.html
+RewriteRule "^simplesaml/" - [L]
\ No newline at end of file
diff --git a/bin/scheduler.php b/bin/scheduler.php
index eff7efb5a31446c303b5fd427b58eb259244599f..42f060839872ff6932a615ae55dd7fc02df6cbcf 100644
--- a/bin/scheduler.php
+++ b/bin/scheduler.php
@@ -177,7 +177,7 @@ function sendNotifications(array $args)
         $rows = '';
         $recipientNotificationIds = [];
         foreach ($recipientNotifications as $recipientNotification) {
-            $url  = $args['applicationUrl'] . 'dist/documents/' . $recipientNotification['main_document_id'];
+            $url  = $args['applicationUrl'] . 'dist/#/documents/' . $recipientNotification['main_document_id'];
             $document = DocumentModel::getById(['id' => $recipientNotification['main_document_id'], 'select' => ['title']]);
 
             $row = str_replace('{{object}}', $document['title'], $lang['notificationTemplateRow']);
diff --git a/index.php b/index.php
index 0267c86efab0fb6fba259180788d0e502bec99cc..e7e1bf90926217aeb923c6cc0b8a33db62202367 100644
--- a/index.php
+++ b/index.php
@@ -1,3 +1,3 @@
 <script>
-    window.location.href = 'dist/index.html';
+    window.location.href = 'dist/';
 </script>
diff --git a/src/app/email/controllers/EmailController.php b/src/app/email/controllers/EmailController.php
index b4cc19f7e9b6cac8f25bc82c286efd26fa290a7d..ad73e50dde847563278aa23c51e261e508a4dc21 100644
--- a/src/app/email/controllers/EmailController.php
+++ b/src/app/email/controllers/EmailController.php
@@ -263,7 +263,7 @@ class EmailController
     public static function sendNotificationToTypist(array $args)
     {
         $lang = LanguageController::get(['lang' => $args['recipient']['lang']]);
-        $url = ConfigurationModel::getApplicationUrl() . 'dist/search?documentId=' . $args['documentId'];
+        $url = ConfigurationModel::getApplicationUrl() . 'dist/#/search?documentId=' . $args['documentId'];
 
         if ($args['mode'] == 'END') {
             $subject = $lang['notificationEndOfWorkflowSubject'];
@@ -347,7 +347,7 @@ class EmailController
     public static function sendNotificationToUser(array $args)
     {
         $lang = LanguageController::get(['lang' => $args['preferences']['lang']]);
-        $url  = ConfigurationModel::getApplicationUrl() . 'dist/documents/' . $args['documentId'];
+        $url  = ConfigurationModel::getApplicationUrl() . 'dist/#/documents/' . $args['documentId'];
         EmailController::createEmail([
             'userId' => $args['senderId'],
             'data'   => [
diff --git a/src/app/user/controllers/UserController.php b/src/app/user/controllers/UserController.php
index 468e4753442a5eab6f20086ce3e1c21fa2807d1e..368b5419e1d95a148c87ce99c076e8a1427061be 100755
--- a/src/app/user/controllers/UserController.php
+++ b/src/app/user/controllers/UserController.php
@@ -732,7 +732,7 @@ class UserController
         $user['preferences'] = json_decode($user['preferences'], true);
         $lang = LanguageController::get(['lang' => $user['preferences']['lang']]);
 
-        $url = ConfigurationModel::getApplicationUrl() . 'dist/update-password?token=' . $resetToken;
+        $url = ConfigurationModel::getApplicationUrl() . 'dist/#/update-password?token=' . $resetToken;
         EmailController::createEmail([
             'userId' => $user['id'],
             'data'   => [
diff --git a/src/core/controllers/AuthenticationController.php b/src/core/controllers/AuthenticationController.php
index aa044897be97824643448c3a0d4f0e093f42a383..23e725183f9da7e698053cf65617b322e92d1852 100755
--- a/src/core/controllers/AuthenticationController.php
+++ b/src/core/controllers/AuthenticationController.php
@@ -377,7 +377,7 @@ class AuthenticationController
             $user = UserModel::getById(['select' => ['login'], 'id' => $args['userId']]);
             $lang = LanguageController::get(['lang' => 'fr']);
     
-            $url = ConfigurationModel::getApplicationUrl() . 'dist/update-password?token=' . $resetToken;
+            $url = ConfigurationModel::getApplicationUrl() . 'dist/#/update-password?token=' . $resetToken;
             EmailController::createEmail([
                 'userId' => $args['userId'],
                 'data'   => [
diff --git a/src/frontend/app/app-routing.module.ts b/src/frontend/app/app-routing.module.ts
index b6f8bbc5cf0bfbf21e2a2fdacf6e499b0be6a232..57b02f95ea80012fd80acac5fbe7c80c97e5dfee 100755
--- a/src/frontend/app/app-routing.module.ts
+++ b/src/frontend/app/app-routing.module.ts
@@ -62,7 +62,7 @@ import { NotificationsListComponent } from './administration/notification/notifi
             { path: 'update-password', component: UpdatePasswordComponent },
             { path: 'password-modification', component: PasswordModificationComponent },
             { path: '**', redirectTo: 'login', pathMatch: 'full' },
-        ], { relativeLinkResolution: 'legacy' }),
+        ], { relativeLinkResolution: 'legacy', useHash: true }),
     ],
     exports: [
         RouterModule
diff --git a/src/frontend/core/index.html b/src/frontend/core/index.html
index d3456fed9f0f30cb429e55fe634d1446459ea5f1..bfbb5d58357c3aaeac8a8135321febe33b673466 100644
--- a/src/frontend/core/index.html
+++ b/src/frontend/core/index.html
@@ -1,21 +1,7 @@
 <!doctype html>
 <html lang="fr">
 <head>
-    <base id="baseHref">
-    <script type="text/javascript">
-        let fullPath = window.location.pathname;
-        let before = fullPath.split('/')[0];
-        let splitedUrl = fullPath.split('/')[1];
-        let after = fullPath.split('/')[2];
-
-        if (typeof splitedUrl === 'undefined' || splitedUrl === '' || splitedUrl === 'dist') {
-            document.getElementById('baseHref').href = '/dist/';
-        } else if (before == '' && (after == 'dist' || after == '')) {
-            document.getElementById('baseHref').href = '/' + splitedUrl + '/dist/';
-        } else {
-            document.getElementById('baseHref').href = '/' + splitedUrl;
-        }
-    </script>
+    <base href=".">
     <meta charset="utf-8">
     <title>Maarch Parapheur</title>
     <meta name="viewport"