1. Einrichten der .htaccess für Umleitung:
Die .htaccess-Datei wird verwendet, um eingehende Anfragen so umzuleiten, dass sie von der index.php verarbeitet werden können, unabhängig davon, welche URL der Benutzer tatsächlich besucht. Ein einfaches Beispiel für eine solche Umleitung ist:

RewriteEngine On
RewriteBase /PATH to
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?path=$1 [NC,L,QSA]

Diese Anweisungen bewirken folgendes:

  • RewriteEngine On aktiviert die Verwendung der Umleitungsfunktionen.
  • RewriteCond %{REQUEST_FILENAME} !-f und
    RewriteCond %{REQUEST_FILENAME} !-d
    stellen sicher, dass die Anfrage nicht direkt auf eine tatsächliche Datei oder ein Verzeichnis auf dem Server umgeleitet wird.
  • RewriteRule ^(.*)$ index.php?path=$1 [NC,L,QSA] leitet alle Anfragen an index.php um und übergibt den ursprünglichen Pfad der Anfrage als path-Parameter.

Apache verwendet die Datei .htaccess, um Serverkonfigurationseinstellungen für einzelne Verzeichnisse zu überschreiben. Für REST-APIs wird .htaccess normalerweise für URL-Rewriting verwendet. Stellen Sie sicher, dass die .htaccess-Datei ist in Ihrem API-Verzeichnis vorhanden.

    Apache ist so konfiguriert, dass .htaccess-Dateien gelesen werden können. Dazu muss die AllowOverride-Direktive in der Apache-Konfigurationsdatei (normalerweise httpd.conf oder apache2.conf) für Ihr Verzeichnis auf All gesetzt sein.

<Directory /var/www/html>
    AllowOverride All
</Directory>

Überprüfen Sie, ob mod_rewrite aktiviert ist, indem Sie  info.php aufrufen.
Das Modul mod_rewrite wird zum Umschreiben von URLs verwendet, eine häufige Anforderung für REST-APIs, um saubere URLs zu erhalten.

2. Verarbeiten der Anfrage in index.php:
In der index.php können Sie den path-Parameter auswerten, um zu bestimmen, welche Aktion ausgeführt werden soll. Für eine REST API, die Postleitzahlen zu Ortsnamen auflöst, könnte der relevante Teil so aussehen:

<?php
$requestMethod = $_SERVER['REQUEST_METHOD'];
$pathInfo = $_GET['path'];

// Zerlege den Pfad in Teile
$parts = explode('/', $pathInfo);
if ($requestMethod == 'GET' && count($parts) == 2 && $parts[0] == 'postcode') {
    $postcode = $parts[1];
    // Logik zur Ermittlung des Ortsnamens anhand der Postleitzahl
    $placeName = findPlaceByPostcode($postcode);

    if ($placeName !== null) {
        header('Content-Type: application/json');
        echo json_encode(['placeName' => $placeName]);
    } else {
        // Ort nicht gefunden
        http_response_code(404);
        echo "Ort nicht gefunden.";
    }
} else {
    // Ungültige Anfrage
    http_response_code(400);
    echo "Ungültige Anfrage.";
}

function findPlaceByPostcode($postcode) {
    // Beispiel-Daten
    $data = [
        '10115' => 'Berlin',
        '01067' => 'Dresden',
        // Weitere Postleitzahlen und Ortsnamen
    ];

    return $data[$postcode] ?? null;
}

Dieses Skript wartet auf GET-Anfragen, die einem bestimmten Muster folgen (z.B. /postcode/10115), und liefert den entsprechenden Ortsnamen als JSON-Antwort, falls verfügbar.

Last modified: Thursday, 14 March 2024, 7:59 AM