Schritt-für-Schritt Anleitung
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
stellen sicher, dass die Anfrage nicht direkt auf eine tatsächliche Datei oder ein Verzeichnis auf dem Server umgeleitet wird.
RewriteCond %{REQUEST_FILENAME} !-dRewriteRule ^(.*)$ index.php?path=$1 [NC,L,QSA]
leitet alle Anfragen anindex.php
um und übergibt den ursprünglichen Pfad der Anfrage alspath
-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.
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.