Hallo in die Runde,
ich bräuchte mal ganz dringend Unterstützung und Rat in meiner Tat. Seit einigen Tagen bin ich nun aus Spaß an der Sache dabei, mir ein kleines CMS zu schreiben - dachte mir "hey, warum nicht, learning by doing". Allerdings denke ich, habe ich nun langsam den Blick darüber verloren. Auf meinem PC über XAMPP hatte alles super funktioniert, jetzt wo ich das auf meinen Server geladen habe, nicht mehr. Ich besuche meine Seite über domain/cms, wo mir auch meine Hauptseite (overview.php) angezeigt wird. Ich möchte nun z.B. meinen Login über eine Route aufrufen (domain/cms/login) statt über (domain/cms/modules/login_register/login.php), dann lande ich aber immer auf URL konnte nicht gefunden werden (das gilt für alle meine angelegten Routen).
Hier die Details:
router.php:
<?php
class Router {
private $routes = [];
private $basePath;
public function setBasePath($basePath) {
$this->basePath = rtrim($basePath, '/');
}
public function addRoute($path, $callback) {
$this->routes[$path] = $callback;
}
public function dispatch($path) {
echo "Requested Path: $path<br>";
echo "Base Path: $this->basePath<br>";
echo "Combined Path: $this->basePath$path<br>";
echo "Routes: " . print_r($this->routes, true) . "<br>";
if (array_key_exists($path, $this->routes)) {
$callback = $this->routes[$path];
call_user_func($callback);
} else {
header("Location: 404.php");
}
}
}
$router = new Router();
$router->addRoute("/", function () {
include("overview.php");
});
$router->addRoute("/login", function () {
include("modules/login_register/login.php");
});
$router->addRoute("/register", function () {
include("modules/login_register/register.php");
});
$router->addRoute("/logout", function () {
include("modules/login_register/logout.php");
});
$router->addRoute("/edit", function () {
include("modules/login_register/edit_profile.php");
});
?>
Alles anzeigen
Und meine index.php:
<?php
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);
session_start();
$isLoggedIn = isset($_SESSION['user_id']);
if ($isLoggedIn) {
$userId = $_SESSION['user_id'];
}
include(__DIR__ . "/includes/functions.php");
require(__DIR__ . "/includes/db.php");
include("router.php");
$basePath = str_replace("/index.php", "", $_SERVER['PHP_SELF']);
define('BASE_PATH', $basePath);
$router->setBasePath(BASE_PATH);
$path = str_replace($basePath, "", $_SERVER['REQUEST_URI']);
$router->dispatch($path);
?>
Alles anzeigen
Außerdem noch die .htaccess:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /cms/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php
</IfModule>
Allmählich verzweifele ich langsam daran, gibt es hier jemanden der Lust hätte mir bei meinem Problem unterstützend zur Seite zu stehen? Ich würde mich sehr über Hilfe freuen und bedanke mich bereits jetzt im voraus für jegliche Hinweise, Denkanstöße und Unterstützung!
Gruß
EDIT: Ich habe es nun selbst geschafft, ich sollte auch schon Rewrite Regeln aktivieren