Teil 2 htaccess und index.php

home php eigenes-cms-entwickeln

ChatGPT - Alltägliche Aufgaben mit Prompts meistern   -  Du möchtest wissen, wie du KI richtig nutzt und davon profitieren kannst? Dann wird dir dieses Workbook eine große Hilfe sein. Rainer Hattenhauer zeigt anhand einer Vielzahl praktischer Beispiele aus den unterschiedlichsten Anwendungsbereichen ganz konkret, wie KI dein Leben erleichtern kann. Egal ob du Texte verfassen, recherchieren, Bilder generieren oder deinen eigenen Programmcode erstellen möchtest. Hier kannst du auch ohne Vorkenntnisse direkt loslegen und die gängigen KI-Frontends ausprobieren. Inklusive ChatGPT, DALL-E 2, Midjourney, DeepL Write etc.

Wir sind Mitglied im Amazon.Partnernet und können mit Affiliate-Links den Betrieb der Webseite etwas unterstützen, für Sie als Leser ist das natürlich vollkommen kostenlos.

Für das CMS sind die beiden Server-Dateien htaccess und index.php die Schaltzentralen des CMS.

Vorbereitungen in der htaccess

Bevor Sie jedoch den ersten PHP-Befehl für Ihr eigenes CMS schreiben, müssen Sie die Domain und das Serververzeichnis etwas vorbereiten. Dafür müssen Sie etwas über suchmaschinenfreundliche URL wissen. Sie können die verpflichtende index.php mit den folgenden Requests implizit ansprechen:

www.domain.de/index.php?kategorie=music&beitrag=dawid-bowie

Parametrisierte URL

und

www.domain.de/music/dawid-bowie

Suchmaschinenfreundliche URL

Beide Varianten sind technisch betrachtet vollkommen korrekt und funktionieren wirklich tadellos, allerdings findet die Suchmaschine Google die erste Version der URL nicht so toll und straft solche Webseiten mit etwas schlechterem Ranking in den Suchergebnissen ab, da sie für das menschliche Auge etwas kompliziert zu entschlüsseln ist.

Suchmaschinen freundliche URL

Ihr eigenes CMS soll also eine canonische URL bzw. eine suchmaschinenfreundliche URL besitzen, daher werden alle Anfragen an die Webseite an die index.php umgeleitet, dadurch empfängt das index.php Script jedweden Request in der $_SERVER['REQUEST_URI'] und kann diese verarbeiten.

RewriteEngine On
RewriteBase /

# Process by index.php
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule (.*) /index.php/$1 [L]

# Prevent Filebrowsing
Options All -Indexes

die htaccess mit Umleitung auf index.php

Die Optionen -f und -d sorgen dafür, das die Umleitung für Files und Directorys gilt. Die Anweisung [L] zeigt dem Interpreter, das es sich um den Letzten Befehl der RewriteCondition handelt.

Nützlicher Nebeneffekt dieser Technik ist, das Sie nach außen nicht offenbaren müssen, mit welchen internen Parametern Ihr eigenes CMS arbeitet, Sie verbergen die innere Struktur des Systems nach außen.

Das Startscript index.php

Durch die Umleitung in der htaccess, kann das Startscript index.php alle Anfragen des Lesers empfangen. Die Datei index.php ist die Schaltzentrale und erste Einstiegspunkt des CMS. Mit dem Befehl require_once() werden zunächst alle weiteren PHP-Scripte dem System hinzugeladen die später gebraucht werden.

require_once('core/mvc/Controller.php');
require_once('core/mvc/Model.php');
require_once('core/mvc/View.php');
require_once('core/dipper/Dipper.php');
require_once('core/parsedown/Parsedown.php');

$url = 'content/'.$_SERVER['REQUEST_URI'];
if (substr($url, -1) == '/') $url = substr($url, 0, -1);

if (is_dir($url))
{
    if(file_exists($url.'/index.md'))
    {
        $categorie = new Controller($url.'/index.md');
    } else {
        echo 'Kategorie: index.md nicht gefunden';
        exit();
    }
} else {
    if(file_exists($url.'.md'))
    {
        $post = new Controller($url.'.md');
    } else {
        echo 'Beitrag: beitrag.md nicht gefunden';
        exit();
    }
}

Startscript index.php

Die Variable $url wird den URL-Request des Lesers aufnehmen und es dem Beitragsverzeichnis content zugewiesen. Der folgende if(substr(...) soll dafür sorgen, das anhängende / immer abgeschnitten werden, das macht die weitere Verarbeitung deutlich einfacher.

Im wesentlichen folgt mit if (is_dir($url))... eine Kontrollstruktur, die untersucht, ob es sich bei der URL um eine Kategorie oder einen Beitrag handelt. In Abhängigkeit der logischen Auswertung, startet das Index-Script den dazugehörigen Controller (derzeigt gibt es nur einen einzigen, universellen Controller).

Eine Kategorie mit der Datei index.md und ein Beitrag mit beitrag.md weisen die identische innere YAML Struktur auf und können daher von einem gemeinsamen Controller gleichermaßen verarbeitet werden, eine Trennung wäre daher nicht nötig.

Verzeichnis-Struktur

Das Projekt zur Entwicklung Ihres eigenen CMS ist in die folgende übersichtliche Verzeichnis-Struktur aufgeteilt.

root:
─────
│
├── content                             // hier liegt der Beitrags-Content
│       │
│       ├── kategorie-1                 // eine Kategorie
│       │       │
│       │       ├── index.md            // Beschreibung der Kategorie
│       │       ├── beitrag-1.md        // erster Beitrag in der kategorie
│       │       └── beitrag-2.md        // weitere Beiträge
│       │
│       └── kategorie-2
│               │
│               ├── index.md            // Kategorie-Beschreibung
│               ├── beitrag-1.md        // Beiträge
│               .
│
├── core
│       │
│       ├── dipper
│       │       │
│       │       └── Dipper.php          // YAML-Parser
│       ├── parsedown
│       │       │
│       │       └── Parsedown.php       // Parser zum übersetzen des Textes in HTML
│       └── mvc ┐                       // In diesem Verzeichnis lagern
│               │                       // die Komponenten des MVC-Patterns
│               ├── Controller.php      // Controller
│               ├── Model.php           // Model
│               └── View.php            // und View
│
├── img                                 // hier liegen alle Bilder
│
├── templates
│       │
│       └── basic.template              // das HTML-template der Seite
│
htaccess                                // Umleitungen auf index.php
index.php                               // Startscript der Webseite

Verzeichnis-Struktur

Da die Anzahl der MVC-Komponenten überschaubar ist, reicht es aus, diese gemeinsam im Ordner mvc abzulegen. Sollte das Projekt später größer werden, kann die Struktur weiter verändert werden.

Die Pakete Dipper und Parsedown werden in späteren Kapiteln rund um die Templates und Beiträge genauer besprochen und sind hier als Vorgriff schon zu sehen.


 15.02.2024    Kontakt@Oliver-Lohse.de    ein eigenes CMS entwickeln programmieren

KI für Content Creation - Texte, Bilder, Audio und Video erstellen mit ChatGPT und Co   -  Nominiert für den Tiger-Award 2024 in der Kategorie „Business Bestseller“. Schnell und effektiv Content erstellen mit ChatGPT und DeepL. Texte optimieren für SEO mit Semrush und Yoast. Bilder, Audio und Videos kreieren mit DALL-E, Midjourney, Adobe Firefly, Adobe Podcast u.v.m. KI-Tools sinnvoll in den gesamten Content-Marketing-Prozess integrieren. KI-Technologien wie ChatGPT und Co. erleichtern Content Creation um ein Vielfaches – Sie müssen nur wissen, wie diese Tools effektiv eingesetzt werden können.

Wir sind Mitglied im Amazon.Partnernet und können mit Affiliate-Links den Betrieb der Webseite etwas unterstützen, für Sie als Leser ist das natürlich vollkommen kostenlos.

Weitere passende Beiträge

Teil 9 Wie gehts weiter?

 php  ein eigenes CMS entwickeln programmieren


Wie gehts mit dem eigenen CMS weiter? Was kann verbessert werden und welche Ausbauoptionen gibt es noch?

Teil 8 Erster Start des eigenen CMS

 php  ein eigenes CMS entwickeln programmieren


Starten Sie das selbst entwickelte Content Management System im Browser.

Teil 7 Beiträge und Kategorien anlegen

 php  ein eigenes CMS entwickeln programmieren


Legen Sie mit Hilfe von Markdown einfach und effizient Beiträge an.

Teil 6 HTML-Templates

 php  ein eigenes CMS entwickeln programmieren


HTML-Templates stellen das Layout und Design Ihres Content Management Systems dar.

Teil 5 Die View (MVC)

 php  ein eigenes CMS entwickeln programmieren


Die View zeigt die Daten des CMS im Browser-Fenster des Lesers an.

Teil 4 Das Model (MVC)

 php  ein eigenes CMS entwickeln programmieren


Das Model ist für die Datenbeschaffung in Ihrem Content Management System verantwortlich und greift auf Beiträge zu.

Teil 3 Der Controller (MVC)

 php  ein eigenes CMS entwickeln programmieren


Der Controller übernimmt die Steuerung Ihres eigenen Content Management Systems, er steuert die Verarbeitung.

Teil 1 Vorwort und Download

 php  ein eigenes CMS entwickeln programmieren


Was das eigene Content Management System können soll und welche Eigenschaften es haben wird.

Impressum


CMSWorkbench.de ist eine reine Entwickler-Webseite und dient vorwiegend als Wissensspeicher für die Entwicklung von CMS

Datenschutz


Die Webseite verwendet keinerlei Tracking- oder Speicher-Mechanismen, die Rückschlüsse auf Ihre IP oder das Leseverhalten zulassen

Affiliate


Wir sind Mitglied im Amazon Partnernet und können mit Affiliate-Links (* den Betrieb der Seite etwas unterstützen, für Sie ist das natürlich kostenlos

Kontakt


Sie können mit uns über eMail Kontakt aufnehmen, schreiben Sie an Kontakt@Oliver-Lohse.de