diff --git a/src/backend/routes/PublicRouter.ts b/src/backend/routes/PublicRouter.ts
index 01ae8396..3ad32efa 100644
--- a/src/backend/routes/PublicRouter.ts
+++ b/src/backend/routes/PublicRouter.ts
@@ -12,6 +12,7 @@ import {ServerTimeEntry} from '../middlewares/ServerTimingMWs';
 import {ClientConfig, TAGS} from '../../common/config/public/ClientConfig';
 import {QueryParams} from '../../common/QueryParams';
 import {PhotoProcessing} from '../model/fileaccess/fileprocessing/PhotoProcessing';
+import {Utils} from '../../common/Utils';
 
 declare global {
   // eslint-disable-next-line @typescript-eslint/no-namespace
@@ -35,7 +36,7 @@ export class PublicRouter {
       let selectedLocale = req.locale;
       if (req.cookies && req.cookies[CookieNames.lang]) {
         if (
-            Config.Server.languages.indexOf(req.cookies[CookieNames.lang]) !== -1
+          Config.Server.languages.indexOf(req.cookies[CookieNames.lang]) !== -1
         ) {
           selectedLocale = req.cookies[CookieNames.lang];
         }
@@ -48,14 +49,14 @@ export class PublicRouter {
     // index.html should not be cached as it contains template that can change
     const renderIndex = (req: Request, res: Response, next: NextFunction) => {
       ejs.renderFile(
-          path.join(ProjectPath.FrontendFolder, req.localePath, 'index.html'),
-          res.tpl,
-          (err, str) => {
-            if (err) {
-              return next(new ErrorDTO(ErrorCodes.GENERAL_ERROR, err.message));
-            }
-            res.send(str);
+        path.join(ProjectPath.FrontendFolder, req.localePath, 'index.html'),
+        res.tpl,
+        (err, str) => {
+          if (err) {
+            return next(new ErrorDTO(ErrorCodes.GENERAL_ERROR, err.message));
           }
+          res.send(str);
+        }
       );
     };
 
@@ -64,7 +65,7 @@ export class PublicRouter {
         if (Config.Server.languages.indexOf(locale) !== -1) {
           res.cookie(CookieNames.lang, locale);
         }
-        res.redirect('/?ln=' + locale);
+        res.redirect(Utils.concatUrls('/' + Config.Server.urlBase) + '/?ln=' + locale);
       };
     };
 
@@ -94,12 +95,12 @@ export class PublicRouter {
       }) as unknown as ClientConfig;
       // Escaping html tags, like 
       confCopy.Server.customHTMLHead =
-          confCopy.Server.customHTMLHead
-              .replace(/&/g, '&')
-              .replace(//g, '>')
-              .replace(/"/g, '"')
-              .replace(/'/g, ''');
+        confCopy.Server.customHTMLHead
+          .replace(/&/g, '&')
+          .replace(//g, '>')
+          .replace(/"/g, '"')
+          .replace(/'/g, ''');
       res.tpl.Config = confCopy;
       res.tpl.customHTMLHead = Config.Server.customHTMLHead;
       const selectedTheme = Config.Gallery.Themes.availableThemes.find(th => th.name === Config.Gallery.Themes.selectedTheme)?.theme || '';
@@ -140,7 +141,7 @@ export class PublicRouter {
           'photo'
         ],
         start_url:
-            Config.Server.publicUrl === '' ? '.' : Config.Server.publicUrl,
+          Config.Server.publicUrl === '' ? '.' : Config.Server.publicUrl,
         background_color: '#000000',
         theme_color: '#000000',
       });
@@ -185,40 +186,40 @@ export class PublicRouter {
         y: vBs[1]
       };
       return '';
+        ' xmlns="http://www.w3.org/2000/svg"' +
+        ' viewBox="' + vBs.join(' ') + '">' +
+        (theme === 'auto' ? ('') :
+          (theme != null ?
+            ('')
+            : '')) +
+        `` +
+        Config.Server.svgIcon.items + '';
     };
 
     app.get('/icon.svg', (req: Request, res: Response) => {
@@ -276,44 +277,44 @@ export class PublicRouter {
     });
 
     app.get(
-        [
-          '/',
-          '/login',
-          '/gallery*',
-          '/share/:' + QueryParams.gallery.sharingKey_params,
-          '/shareLogin',
-          '/admin',
-          '/duplicates',
-          '/faces',
-          '/albums',
-          '/search*',
-        ],
-        AuthenticationMWs.tryAuthenticate,
-        addTPl, // add template after authentication was successful
-        setLocale,
-        renderIndex
+      [
+        '/',
+        '/login',
+        '/gallery*',
+        '/share/:' + QueryParams.gallery.sharingKey_params,
+        '/shareLogin',
+        '/admin',
+        '/duplicates',
+        '/faces',
+        '/albums',
+        '/search*',
+      ],
+      AuthenticationMWs.tryAuthenticate,
+      addTPl, // add template after authentication was successful
+      setLocale,
+      renderIndex
     );
     Config.Server.languages.forEach((l) => {
       app.get(
-          [
-            '/' + l + '/',
-            '/' + l + '/login',
-            '/' + l + '/gallery*',
-            '/' + l + '/share*',
-            '/' + l + '/admin',
-            '/' + l + '/search*',
-          ],
-          redirectToBase(l)
+        [
+          '/' + l + '/',
+          '/' + l + '/login',
+          '/' + l + '/gallery*',
+          '/' + l + '/share*',
+          '/' + l + '/admin',
+          '/' + l + '/search*',
+        ],
+        redirectToBase(l)
       );
     });
 
     const renderFile = (subDir = '') => {
       return (req: Request, res: Response) => {
         const file = path.join(
-            ProjectPath.FrontendFolder,
-            req.localePath,
-            subDir,
-            req.params.file
+          ProjectPath.FrontendFolder,
+          req.localePath,
+          subDir,
+          req.params.file
         );
         if (!fs.existsSync(file)) {
           return res.sendStatus(404);
@@ -326,16 +327,16 @@ export class PublicRouter {
     };
 
     app.get(
-        '/assets/:file(*)',
-        setLocale,
-        AuthenticationMWs.normalizePathParam('file'),
-        renderFile('assets')
+      '/assets/:file(*)',
+      setLocale,
+      AuthenticationMWs.normalizePathParam('file'),
+      renderFile('assets')
     );
     app.get(
-        '/:file',
-        setLocale,
-        AuthenticationMWs.normalizePathParam('file'),
-        renderFile()
+      '/:file',
+      setLocale,
+      AuthenticationMWs.normalizePathParam('file'),
+      renderFile()
     );
   }
 }
diff --git a/test/common/unit/Utils.spec.ts b/test/common/unit/Utils.spec.ts
index 160a5db6..01367ad7 100644
--- a/test/common/unit/Utils.spec.ts
+++ b/test/common/unit/Utils.spec.ts
@@ -10,7 +10,9 @@ describe('Utils', () => {
     expect(Utils.concatUrls('abc\\', 'cde')).to.be.equal('abc/cde');
     expect(Utils.concatUrls('abc/', 'cde/')).to.be.equal('abc/cde');
     expect(Utils.concatUrls('./abc\\', 'cde/')).to.be.equal('./abc/cde');
+    expect(Utils.concatUrls('/abc\\', 'cde/')).to.be.equal('/abc/cde');
     expect(Utils.concatUrls('abc/', '\\cde/')).to.be.equal('abc/cde');
+    expect(Utils.concatUrls('/abc/', '\\cde/')).to.be.equal('/abc/cde');
     expect(Utils.concatUrls('abc\\', '\\cde/')).to.be.equal('abc/cde');
     expect(Utils.concatUrls('abc\\', '/cde/')).to.be.equal('abc/cde');
     expect(Utils.concatUrls('abc/', '/cde/')).to.be.equal('abc/cde');