contact me!

29 September 2008

HTML mit PHP parsen

Auf einigen Servern ist das parsen von HTML durch PHP abgeschaltet und lässt sich auch nicht per .htaccess aktivieren - entweder wurde der Handler anders benannt, oder der Betreiber hat andere Vorkehrungen getroffen.
Falls jedoch mod_rewrite aktiv ist, hat man mehrere Möglichkeiten, die Dateien trotzdem von PHP interpretieren zu lassen.
1. Man hat selbst Einfluss auf die Dateinamen. Mit einer einzigen Zeile in der .htaccess
RewriteRule ^(.*).html$ $1.php
wird bei jeglichem Aufruf einer html-Datei (meinedomain.de/index.html) intern die entsprechende php-Datei gewählt und nach dem Parsen an den Browser ausgeliefert. Dazu muss man natürlich die html-Dateien umbenennen, so dass sie auf .php enden.
2. Man hat keinen direkten Einfluss auf die Dateinamen (z.B. dadurch, dass der Blog auf dem eigenen Server veröffentlicht wird). Durch die Zeile
RewriteRule ^(.*)\.html$ parsemyhtml\.php\?parse=$1
wird jeglicher Aufruf an eine .html-Datei auf die Datei parsemyhtml.php umgelenkt. Dabei wird dieser .php-Datei der Pfad zu der zu parsenden .html-Datei als Parameter übergeben (ohne Endung). Im einfachsten Fall würde die Datei folgendes beinhalten:
<?php
$parse = $_GET["parse"];
$openhtml = $parse . ".html";
if (file_exists($openhtml)) {
include($openhtml);
} else {
header("HTTP/1.0 404 Not Found");
}
?>
Hierdurch wird der Inhalt der jeweiligen .html-Datei innerhalb einer .php-Datei eingefügt und somit auch vom PHP-Parser verarbeitet. Statt per Header auf 404 zu verweisen, könnte man auch auf die Startseite oder eine eigene 404-Statusseite weiterleiten ( header('Location: http://www.example.com/'); ) oder jeden beliebigen Inhalt präsentieren (z.B. das google 404-Widget, mit dem die Seite ungefähr so aussehen kann). Natürlich sollte man darauf achten, dass durch den Parameter nicht beliebige Dateien abgerufen werden können, die dem direkten Zugriff durch den Browser normalerweise nicht ausgesetzt sind.

Labels: ,

Apache mit Bonjour

Im Safari gibt es die Möglichkeit, per bonjour veröffentlichte Server anzusurfen. Das standardmäßig der mit OS X ausgelieferte Apache die von Benutzern angelegten Webseiten auf diesem Weg announciert kann man sich in dem Zusammanhang denken. Dass dahinter zeroconf steckt, erfährt man auch relativ schnell. Und genau hiermit kann man auch den Apache ausstatten, der nicht auf Mac OS X läuft. Das auf Avahi basierende Modul mod-dnssd - per
aptitude install libapache2-mod-dnssd
installiert und mittels
a2emod mod-dnssd
aktiviert - veröffentlicht alle vhost-Einträge und /~USER Verzeichnisse nach einem Neustart des Apache. Fortan finden sich im Safari auch die Webseiten des Heimservers. Fehlt nur noch das entsprechende Plugin für den Firefox.

Labels: , , ,