update
This commit is contained in:
@@ -35,7 +35,7 @@ $assetBase = $appBaseUrl !== '' ? $appBaseUrl : '';
|
|||||||
<body class="bg-slate-50 text-slate-800" data-page="dashboard">
|
<body class="bg-slate-50 text-slate-800" data-page="dashboard">
|
||||||
<header class="sticky top-0 z-30 bg-white/90 border-b backdrop-blur">
|
<header class="sticky top-0 z-30 bg-white/90 border-b backdrop-blur">
|
||||||
<div class="max-w-5xl mx-auto px-4 py-4 flex items-center gap-3">
|
<div class="max-w-5xl mx-auto px-4 py-4 flex items-center gap-3">
|
||||||
<a href="/index.php" class="btn" title="Zurück zur Übersicht">← Übersicht</a>
|
<a href="<?= $appBaseUrl ?>/index.php" class="btn" title="Zurück zur Übersicht">← Übersicht</a>
|
||||||
<h1 class="font-semibold text-lg">Dashboard</h1>
|
<h1 class="font-semibold text-lg">Dashboard</h1>
|
||||||
<div class="ms-auto flex gap-2 items-center">
|
<div class="ms-auto flex gap-2 items-center">
|
||||||
<div class="relative" id="userMenu">
|
<div class="relative" id="userMenu">
|
||||||
@@ -43,9 +43,9 @@ $assetBase = $appBaseUrl !== '' ? $appBaseUrl : '';
|
|||||||
<span id="userAvatar">U</span>
|
<span id="userAvatar">U</span>
|
||||||
</button>
|
</button>
|
||||||
<div id="userMenuPanel" class="user-menu hidden" role="menu">
|
<div id="userMenuPanel" class="user-menu hidden" role="menu">
|
||||||
<a href="/admin/profile.php" class="user-menu-item" data-menu="profile">Profil</a>
|
<a href="<?= $appBaseUrl ?>/admin/profile.php" class="user-menu-item" data-menu="profile">Profil</a>
|
||||||
<a href="/admin/dashboard.php" class="user-menu-item" data-role="admin">Dashboard</a>
|
<a href="<?= $appBaseUrl ?>/admin/dashboard.php" class="user-menu-item" data-role="admin">Dashboard</a>
|
||||||
<a href="/admin/settings.php" class="user-menu-item" data-role="admin">Administration</a>
|
<a href="<?= $appBaseUrl ?>/admin/settings.php" class="user-menu-item" data-role="admin">Administration</a>
|
||||||
<button id="btn-logout" type="button" class="user-menu-item text-red-600">Logout</button>
|
<button id="btn-logout" type="button" class="user-menu-item text-red-600">Logout</button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -37,7 +37,7 @@ $assetBase = $appBaseUrl !== '' ? $appBaseUrl : '';
|
|||||||
<body class="bg-slate-50 text-slate-800" data-page="account">
|
<body class="bg-slate-50 text-slate-800" data-page="account">
|
||||||
<header class="sticky top-0 z-30 bg-white/90 border-b backdrop-blur">
|
<header class="sticky top-0 z-30 bg-white/90 border-b backdrop-blur">
|
||||||
<div class="max-w-5xl mx-auto px-4 py-4 flex items-center gap-3">
|
<div class="max-w-5xl mx-auto px-4 py-4 flex items-center gap-3">
|
||||||
<a href="/index.php" class="btn" title="Zurück zur Übersicht">← Übersicht</a>
|
<a href="<?= $appBaseUrl ?>/index.php" class="btn" title="Zurück zur Übersicht">← Übersicht</a>
|
||||||
<h1 class="font-semibold text-lg">Mein Konto</h1>
|
<h1 class="font-semibold text-lg">Mein Konto</h1>
|
||||||
<div class="ms-auto flex gap-2 items-center">
|
<div class="ms-auto flex gap-2 items-center">
|
||||||
<div class="relative" id="userMenu">
|
<div class="relative" id="userMenu">
|
||||||
@@ -45,9 +45,9 @@ $assetBase = $appBaseUrl !== '' ? $appBaseUrl : '';
|
|||||||
<span id="userAvatar">U</span>
|
<span id="userAvatar">U</span>
|
||||||
</button>
|
</button>
|
||||||
<div id="userMenuPanel" class="user-menu hidden" role="menu">
|
<div id="userMenuPanel" class="user-menu hidden" role="menu">
|
||||||
<a href="/admin/profile.php" class="user-menu-item" data-menu="profile">Profil</a>
|
<a href="<?= $appBaseUrl ?>/admin/profile.php" class="user-menu-item" data-menu="profile">Profil</a>
|
||||||
<a href="/admin/dashboard.php" class="user-menu-item" data-role="admin">Dashboard</a>
|
<a href="<?= $appBaseUrl ?>/admin/dashboard.php" class="user-menu-item" data-role="admin">Dashboard</a>
|
||||||
<a href="/admin/settings.php" class="user-menu-item" data-role="admin">Administration</a>
|
<a href="<?= $appBaseUrl ?>/admin/settings.php" class="user-menu-item" data-role="admin">Administration</a>
|
||||||
<button id="btn-logout" type="button" class="user-menu-item text-red-600">Logout</button>
|
<button id="btn-logout" type="button" class="user-menu-item text-red-600">Logout</button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -35,7 +35,7 @@ $assetBase = $appBaseUrl !== '' ? $appBaseUrl : '';
|
|||||||
<body class="bg-slate-50 text-slate-800" data-page="admin">
|
<body class="bg-slate-50 text-slate-800" data-page="admin">
|
||||||
<header class="sticky top-0 z-30 bg-white/90 border-b backdrop-blur">
|
<header class="sticky top-0 z-30 bg-white/90 border-b backdrop-blur">
|
||||||
<div class="max-w-5xl mx-auto px-4 py-4 flex items-center gap-3">
|
<div class="max-w-5xl mx-auto px-4 py-4 flex items-center gap-3">
|
||||||
<a href="/index.php" class="btn" title="Zurück zur Übersicht">← Übersicht</a>
|
<a href="<?= $appBaseUrl ?>/index.php" class="btn" title="Zurück zur Übersicht">← Übersicht</a>
|
||||||
<h1 class="font-semibold text-lg">Administration</h1>
|
<h1 class="font-semibold text-lg">Administration</h1>
|
||||||
<div class="ms-auto flex gap-2 items-center">
|
<div class="ms-auto flex gap-2 items-center">
|
||||||
<div class="relative" id="userMenu">
|
<div class="relative" id="userMenu">
|
||||||
@@ -43,9 +43,9 @@ $assetBase = $appBaseUrl !== '' ? $appBaseUrl : '';
|
|||||||
<span id="userAvatar">U</span>
|
<span id="userAvatar">U</span>
|
||||||
</button>
|
</button>
|
||||||
<div id="userMenuPanel" class="user-menu hidden" role="menu">
|
<div id="userMenuPanel" class="user-menu hidden" role="menu">
|
||||||
<a href="/admin/profile.php" class="user-menu-item" data-menu="profile">Profil</a>
|
<a href="<?= $appBaseUrl ?>/admin/profile.php" class="user-menu-item" data-menu="profile">Profil</a>
|
||||||
<a href="/admin/dashboard.php" class="user-menu-item" data-role="admin">Dashboard</a>
|
<a href="<?= $appBaseUrl ?>/admin/dashboard.php" class="user-menu-item" data-role="admin">Dashboard</a>
|
||||||
<a href="/admin/settings.php" class="user-menu-item" data-role="admin">Administration</a>
|
<a href="<?= $appBaseUrl ?>/admin/settings.php" class="user-menu-item" data-role="admin">Administration</a>
|
||||||
<button id="btn-logout" type="button" class="user-menu-item text-red-600">Logout</button>
|
<button id="btn-logout" type="button" class="user-menu-item text-red-600">Logout</button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
51
public/.htaccess
Normal file
51
public/.htaccess
Normal file
@@ -0,0 +1,51 @@
|
|||||||
|
RewriteEngine On
|
||||||
|
|
||||||
|
# ---------------------------------------------------------
|
||||||
|
# 2) Uploads schützen
|
||||||
|
# ---------------------------------------------------------
|
||||||
|
RewriteRule ^uploads/avatar/ - [F]
|
||||||
|
|
||||||
|
# ---------------------------------------------------------
|
||||||
|
# 3) Auth-Routen
|
||||||
|
# ---------------------------------------------------------
|
||||||
|
RewriteRule ^auth/login/?$ auth/login.php [L]
|
||||||
|
RewriteRule ^auth/register/?$ auth/register.php [L]
|
||||||
|
RewriteRule ^auth/logout/?$ auth/logout.php [L]
|
||||||
|
|
||||||
|
# ---------------------------------------------------------
|
||||||
|
# 4) Tools-Regel
|
||||||
|
# /tools/foo.php → landingpage/tools/foo.php
|
||||||
|
# ---------------------------------------------------------
|
||||||
|
RewriteCond %{REQUEST_URI} ^/tools/ [NC]
|
||||||
|
RewriteCond %{REQUEST_FILENAME} !-f
|
||||||
|
RewriteCond %{REQUEST_FILENAME} !-d
|
||||||
|
RewriteRule ^tools/(.*)$ landingpage/tools/$1 [L]
|
||||||
|
|
||||||
|
# ---------------------------------------------------------
|
||||||
|
# 5) Generische Landingpage-Regel
|
||||||
|
# ---------------------------------------------------------
|
||||||
|
RewriteCond %{REQUEST_FILENAME} !-f
|
||||||
|
RewriteCond %{REQUEST_FILENAME} !-d
|
||||||
|
RewriteCond %{REQUEST_URI} !^/(auth|assets|uploads|landingpage|tools|_errors)/ [NC]
|
||||||
|
RewriteCond %{REQUEST_URI} ^/([^/]+)/?$ [NC]
|
||||||
|
RewriteCond %{DOCUMENT_ROOT}/landingpage/%1/index.php -f
|
||||||
|
RewriteRule ^ landingpage/%1/index.php [L]
|
||||||
|
|
||||||
|
# ---------------------------------------------------------
|
||||||
|
# 6) Fallback-Regeln (.php und /index.php)
|
||||||
|
# ---------------------------------------------------------
|
||||||
|
RewriteCond %{REQUEST_FILENAME} !-d
|
||||||
|
RewriteCond %{REQUEST_FILENAME}.php -f
|
||||||
|
RewriteRule ^(.+?)/?$ $1.php [L]
|
||||||
|
|
||||||
|
RewriteCond %{REQUEST_FILENAME} !-d
|
||||||
|
RewriteCond %{REQUEST_FILENAME}/index.php -f
|
||||||
|
RewriteRule ^(.+?)/?$ $1/index.php [L]
|
||||||
|
|
||||||
|
# ---------------------------------------------------------
|
||||||
|
# 7) Globaler 404-Fallback
|
||||||
|
# ---------------------------------------------------------
|
||||||
|
RewriteCond %{REQUEST_FILENAME} !-f
|
||||||
|
RewriteCond %{REQUEST_FILENAME} !-d
|
||||||
|
RewriteCond %{REQUEST_URI} !^/(assets|uploads|auth|landingpage|tools|_errors)/ [NC]
|
||||||
|
RewriteRule ^ _errors/404.php [L]
|
||||||
27
public/_errors/404.php
Normal file
27
public/_errors/404.php
Normal file
@@ -0,0 +1,27 @@
|
|||||||
|
<?php
|
||||||
|
http_response_code(404);
|
||||||
|
$appBaseUrl = rtrim($GLOBALS['app_base_url'] ?? '', '/');
|
||||||
|
?>
|
||||||
|
<!doctype html>
|
||||||
|
<html lang="de">
|
||||||
|
<head>
|
||||||
|
<meta charset="utf-8"/>
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1"/>
|
||||||
|
<title>Seite nicht gefunden</title>
|
||||||
|
<style>
|
||||||
|
body{font-family:system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;background:#0f172a;color:#e2e8f0;margin:0;min-height:100vh;display:flex;align-items:center;justify-content:center;padding:2rem}
|
||||||
|
.card{background:#1e293b;border-radius:1rem;padding:2rem;max-width:460px;text-align:center;box-shadow:0 25px 45px rgba(2,6,23,.45);}
|
||||||
|
h1{margin-top:0;font-size:2rem}
|
||||||
|
p{color:#cbd5f5}
|
||||||
|
a{display:inline-flex;margin-top:1.5rem;padding:.6rem 1.4rem;border-radius:.8rem;background:#38bdf8;color:#0f172a;text-decoration:none;font-weight:600}
|
||||||
|
a:hover{background:#0ea5e9;color:#fff}
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<div class="card">
|
||||||
|
<h1>404 – Seite nicht gefunden</h1>
|
||||||
|
<p>Die angeforderte Seite existiert nicht oder wurde verschoben.</p>
|
||||||
|
<a href="<?= $appBaseUrl ?: '/' ?>">Zur Übersicht</a>
|
||||||
|
</div>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
Reference in New Issue
Block a user