Server Side Includes, PHP und NGINX

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 oder 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 tuts auch.

Einbinden mit

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

Wie die Endung lautet, ist im Grunde genommen egal.

Server Side Includes bei 1und1

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