Die .htaccess-Datei ist eine Konfigurationsdatei für Apache-Webserver, mit der du das Verhalten deiner Website direkt beeinflussen kannst – ohne Zugriff auf die zentrale Serverkonfiguration. Sie befindet sich typischerweise im Root-Verzeichnis deiner Website (z. B. /public_html oder /www).
Die .htaccess wirkt nur auf Apache-Servern (nicht bei nginx).
Änderungen gelten sofort, du brauchst den Server nicht neu zu starten.
Viele Shared-Hosting-Anbieter erlauben .htaccess, aber nicht alle Befehle sind immer erlaubt.
Fehlerhafte Einträge können deine Seite unbrauchbar machen – also Vorsicht beim Bearbeiten.
Entity-Header sind HTTP-Header, die Informationen über den Hauptteil (Body) einer Nachricht enthalten. Sie können sowohl in Anfragen als auch in Antworten vorkommen und beschreiben Eigenschaften des Inhalts, wie Typ, Länge, Kodierung oder letzte Änderung.
1. Content-Type
Content-Type: application/json; charset=UTF-8
2. Content-Length
Content-Length: 1024
3. Content-Encoding
Content-Encoding: gzip
4. Content-Language
Content-Language: de-DE
5. Cache-Location
Content-Location: /files/document.pdf
6. Last-Modified
Last-Modified: Tue, 30 Jan 2025 14:20:00 GMT
7. ETag
ETag: "abc123xyz"
8. Expires
Expires: Fri, 02 Feb 2025 12:00:00 GMT
9. Allow
Allow: GET, POST, HEAD
10. Refresh (Nicht standardisiert, aber oft verwendet)
Refresh: 10; url=https://example.com
Diese Header helfen dabei, den Inhalt einer HTTP-Nachricht genau zu beschreiben, Caching-Strategien zu optimieren und die korrekte Darstellung sicherzustellen.
Anfrage-Header (Request Headers) sind HTTP-Header, die ein Client (z. B. ein Webbrowser oder eine API-Anfrage) an den Server sendet, um zusätzliche Informationen über die Anfrage, den Client oder die gewünschten Inhalte bereitzustellen.
1. Host
Host: www.example.com
2. User-Agent
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64)
3. Accept
Accept: text/html, application/json
4. Accept-Language
Accept-Language: de-DE, en-US
5. Accept-Encoding
Accept-Encoding: gzip, deflate, br
6. Referer
Referer: https://www.google.com/
7. Authorization
Authorization: Basic dXNlcm5hbWU6cGFzc3dvcmQ=
8. Cookie
Cookie: sessionId=abc123; theme=dark
9. Content-Type (bei POST/PUT-Anfragen)
Content-Type: application/json
10. Origin
Origin: https://www.example.com
Diese Header helfen dem Server, die Anfrage zu verstehen und entsprechend zu reagieren, indem sie Details über den Client, die bevorzugten Inhalte und Sicherheitsaspekte liefern.
HTTP-Header sind Metadaten, die bei HTTP-Anfragen und -Antworten zwischen Client (z. B. Browser) und Server übertragen werden. Sie enthalten wichtige Informationen zur Kommunikation, wie z. B.:
Cache-Control zur Steuerung des Caching).User-Agent, der den Browser-Typ beschreibt).Server, das den verwendeten Webserver angibt).Content-Type, das den Medientyp der Antwort definiert).Beispiel einer HTTP-Anfrage mit Headern:
GET /index.html HTTP/1.1
Host: www.example.com
User-Agent: Mozilla/5.0
Accept: text/html
Beispiel einer HTTP-Antwort mit Headern:
HTTP/1.1 200 OK
Content-Type: text/html
Content-Length: 3456
Server: Apache
Header werden oft für Sicherheit (z. B. Strict-Transport-Security), Performance (z. B. Cache-Control) und Authentifizierung (z. B. Authorization) genutzt.
Der MEAN-Stack ist eine moderne Sammlung von JavaScript-basierten Technologien, die zusammen genutzt werden, um dynamische, skalierbare und performante Webanwendungen zu entwickeln. MEAN ist ein Akronym, das die vier Hauptkomponenten des Stacks beschreibt:
M – MongoDB
E – Express.js
A – Angular
N – Node.js
Der MEAN-Stack ist ein häufiger Konkurrent zum MERN-Stack, bei dem React (statt Angular) als Frontend-Technologie verwendet wird. Während Angular eine vollständige Lösung bietet, ermöglicht React mehr Flexibilität durch eine "Bring-your-own-library"-Philosophie.
Der LAMP-Stack ist eine Sammlung von Open-Source-Software, die zusammen genutzt wird, um dynamische Websites und Webanwendungen zu entwickeln. Der Begriff LAMP steht als Akronym für folgende Komponenten:
L – Linux
A – Apache
Der LAMP-Stack wird oft mit modernen Alternativen wie dem MEAN-Stack (MongoDB, Express.js, Angular, Node.js) verglichen, bleibt aber wegen seiner Einfachheit und Zuverlässigkeit weiterhin beliebt, insbesondere bei traditionellen Webentwicklungsprojekten.
Der LEMP-Stack ist eine Sammlung von Software, die häufig zusammen verwendet wird, um dynamische Websites und Webanwendungen zu hosten. Der Begriff "LEMP" steht für die einzelnen Komponenten des Stacks:
Linux: Das Betriebssystem, auf dem der Stack läuft. Es ist die Basis, die die anderen Softwarekomponenten unterstützt.
Nginx (ausgesprochen "Engine-X"): Ein leistungsstarker, ressourcenschonender Webserver. Nginx wird oft bevorzugt, weil es besser für die Verarbeitung von gleichzeitigen Verbindungen skaliert als Apache.
MySQL (oder MariaDB): Die relationale Datenbank, die die Daten speichert. MySQL wird oft in Kombination mit PHP verwendet, um dynamische Inhalte zu erzeugen. In modernen Setups wird MariaDB, eine Abspaltung von MySQL, häufig verwendet.
PHP, Python oder Perl: Die Skriptsprache, die für die serverseitige Programmierung verwendet wird. PHP ist dabei besonders häufig in der Webentwicklung vertreten, um Inhalte aus der Datenbank dynamisch auf Webseiten darzustellen.
Der LEMP-Stack ist eine moderne Alternative zum bekannteren LAMP-Stack, bei dem Apache den Webserver darstellt.
Die Client-Server-Architektur ist ein verbreitetes Konzept in der Informatik, das die Struktur von Netzwerken und Anwendungen beschreibt. Sie trennt die Aufgaben zwischen den Client- und Server-Komponenten, die auf unterschiedlichen Maschinen oder Geräten laufen können. Hier sind die grundlegenden Merkmale:
Client: Der Client ist ein Endgerät oder eine Anwendung, die Anfragen an den Server stellt. Dies können Computer, Smartphones oder spezielle Softwareanwendungen sein. Clients sind in der Regel für die Benutzerinteraktion zuständig und senden Anfragen, um Informationen oder Dienste vom Server zu erhalten.
Server: Der Server ist ein leistungsfähigerer Computer oder eine Softwareanwendung, die die Anfragen der Clients bearbeitet und entsprechende Antworten oder Dienste bereitstellt. Der Server verarbeitet die Logik und Daten und sendet die Ergebnisse zurück an die Clients.
Kommunikation: Die Kommunikation zwischen Clients und Servern erfolgt in der Regel über ein Netzwerk, oft mithilfe von Protokollen wie HTTP (für Webanwendungen) oder TCP/IP. Die Clients senden Anfragen, und die Server antworten mit den angeforderten Daten oder Dienstleistungen.
Zentralisierte Ressourcen: Die Server bieten zentrale Ressourcen, wie Datenbanken oder Anwendungen, die von mehreren Clients genutzt werden können. Dies ermöglicht eine effiziente Nutzung von Ressourcen und erleichtert die Wartung und Aktualisierung.
Skalierbarkeit: Die Client-Server-Architektur ermöglicht es, Systeme leicht zu skalieren. Man kann weitere Server hinzufügen, um die Last zu verteilen, oder zusätzliche Clients, um mehr Benutzer zu unterstützen.
Sicherheit: Durch die Trennung von Client und Server können Sicherheitsmaßnahmen zentralisiert implementiert werden, was es einfacher macht, Daten und Dienste zu schützen.
Insgesamt bietet die Client-Server-Architektur eine flexible und effiziente Möglichkeit, Anwendungen und Dienste in verteilten Systemen bereitzustellen.
PSR steht für "PHP Standards Recommendation" und ist eine Reihe von standardisierten Empfehlungen für die Entwicklung mit PHP. Diese Standards werden von der PHP-Fig (Framework Interoperability Group) entwickelt und sollen die Interoperabilität zwischen verschiedenen PHP-Frameworks und -Bibliotheken verbessern. Hier sind einige der bekanntesten PSRs:
PSR-1: Basic Coding Standard: Definiert grundlegende Kodierungsstandards wie Dateibenennung, Seitenkodierung und grundlegende Codierungsprinzipien, um die Codebasis konsistenter und lesbarer zu machen.
PSR-2: Coding Style Guide: Baut auf PSR-1 auf und bietet detaillierte Richtlinien für die Formatierung von PHP-Code, einschließlich Einrückungen, Zeilenlängen und die Platzierung von Klammern und Schlüsselwörtern.
PSR-3: Logger Interface: Definiert ein standardisiertes Interface für Logger-Bibliotheken, um die Austauschbarkeit von Logging-Komponenten zu gewährleisten.
PSR-4: Autoloading Standard: Beschreibt einen Autoloading-Standard für PHP-Dateien, der auf Namespaces basiert. Es ersetzt PSR-0 und bietet eine effizientere und flexiblere Möglichkeit, Klassen automatisch zu laden.
PSR-6: Caching Interface: Definiert ein standardisiertes Interface für Caching-Bibliotheken, um die Austauschbarkeit von Caching-Komponenten zu erleichtern.
PSR-7: HTTP Message Interface: Definiert Interfaces für HTTP-Nachrichten (Anfragen und Antworten), die es ermöglichen, HTTP-Nachrichtenobjekte auf eine standardisierte Weise zu erstellen und zu manipulieren. Dies ist besonders nützlich für die Entwicklung von HTTP-Client- und Server-Bibliotheken.
PSR-11: Container Interface: Definiert ein Interface für Dependency Injection Container, um die Austauschbarkeit von Container-Implementierungen zu ermöglichen.
PSR-12: Extended Coding Style Guide: Eine Erweiterung von PSR-2, die zusätzliche Regeln und Richtlinien für den Coding-Style in PHP-Projekten bietet.
Die Einhaltung von PSRs hat mehrere Vorteile:
Ein Beispiel für PSR-4 Autoloading-Konfiguration in composer.json:
{
"autoload": {
"psr-4": {
"MyApp\\": "src/"
}
}
}
Dies bedeutet, dass Klassen im Namespace MyApp im Verzeichnis src/ gesucht werden. Wenn Sie also eine Klasse MyApp\ExampleClass haben, sollte die Datei src/ExampleClass.php enthalten.
PSRs sind ein wesentlicher Bestandteil moderner PHP-Entwicklung und helfen dabei, einen einheitlichen und professionellen Entwicklungsstandard aufrechtzuerhalten.
Swoole ist eine leistungsstarke Erweiterung für PHP, die asynchrone I/O-Operationen und Coroutines unterstützt. Sie wurde entwickelt, um die Performance von PHP-Anwendungen erheblich zu verbessern, indem sie es ermöglicht, hochperformante, asynchrone und parallele Netzwerkanwendungen zu erstellen. Swoole erweitert die Fähigkeiten von PHP über das hinaus, was mit herkömmlichen synchronen PHP-Skripten möglich ist.
Asynchrone I/O:
Hohe Leistung:
HTTP Server:
Task Worker:
Timer und Scheduler:
<?php
use Swoole\Http\Server;
use Swoole\Http\Request;
use Swoole\Http\Response;
$server = new Server("0.0.0.0", 9501);
$server->on("start", function (Server $server) {
echo "Swoole HTTP server is started at http://127.0.0.1:9501\n";
});
$server->on("request", function (Request $request, Response $response) {
$response->header("Content-Type", "text/plain");
$response->end("Hello, Swoole!");
});
$server->start();
In diesem Beispiel:
Swoole stellt eine signifikante Erweiterung der Möglichkeiten von PHP dar und ermöglicht es Entwicklern, Anwendungen zu erstellen, die weit über die traditionellen Einsatzmöglichkeiten von PHP hinausgehen.