single.php

Letztes Update am

Anstelle von Server Side Includes benutze ich seit einiger Zeit PHP Includes für Webseiten ohne Content Management System.

Die HTML-Seiten brauchen nur die Endung .php, schon holt <?php include(„inc/headbase.php“); ?> den Header in die Seite.

Um Adressen von einer Endung mit .php auf dieselbe URL ohne PHP umzuschreiben, haben wir das übliche Apache-Rewrite benutzt.

RewriteEngine on  
RewriteCond %{REQUEST_FILENAME} !-f  
RewriteCond %{REQUEST_FILENAME} !-d  
RewriteCond %{REQUEST_URI} !\.php$ [NC]  
RewriteRule ^(.*)$ $1.php [L]

Unter NGINX umgewandelt zur Direktive

rewrite ^/([a-zA-Z0-9-]+)$ /$1.php last;

Erlaubt das Umschreiben von Groß- und Kleinbuchstaben, Ziffern und Bindestrich im Dateinamen. Wie gut, wenn man ein bißchen Regex spricht …

Zurück zu traditionellen Server Side Includes mit NGINX

So ganz glücklich bin ich mit den PHP-Includes für einfache Webseiten nicht geworden. Rewrites der Adressen und Umleitungen werden mir zu kompliziert, wenn Anwendungen wie eine Suche oder Formularanwendungen ins Spiel kommen oder sie funktionieren gar nicht. Kann sein, dass ich das einfach nicht hinkriege …

Klassische Server Side Includes mit NGINX sind einfach:

location /myfolder {
   ssi on;
   # other directives here
}

Die HTML-Seiten müssen nicht mehr auf shtml enden, sondern einfach .html tut’s schon. Mehr ist nicht nötig für diese einfachste Form der SSI.

Einbinden mit

<!--#include virtual="/myfolder/headbase.inc" -->

Wie die Endung lautet, ist im Grunde genommen egal. Nginx interpretiert alles als puren Text, also HTML und führt keine Anweisungen in Includes aus.

SSI mit Nginx und Clean URLs

Für das Redirect habe ich zig Varianten ausprobiert (wie sagt man so schön: Unix is a moving Target, Nginx wohl ebenso). Diese hat bei mir funktioniert.

rewrite ^/([a-zA-Z0-9-]+)$ /$1.html last;
ssi on;

How to remove both .php and .html extensions from url using NGINX?

Server Side Includes bei 1und1

Beim Transfer einer lang existierenden Webseite zu 1und1 haben die Server Side Includes nicht mehr funktioniert. Bei dem 1und1 / IONOS-Webspace war es die Endung: Keine Endung hat dann am Ende funktioniert, entgegen allen anders lautenden Dokumentationen von IONOS.