HTML als php Seiten

Tantchen

Mitglied
Hallo,

ich habe statische HTML-Seiten, die ich als php parsen lasse. Das hat bisher auch gut geklappt. Ich musste nur die folgende Codezeile in die .htaccess eingeben:

AddType application/x-httpd-php .html .htm

Somit konnte ich innerhalb meiner HTML-Dateien php Scripte einbinden oder auch das ganze Menü, Header und Fußzeile, welches sich auf allen Seiten wiederholt, per include einbinden. Ein re-programmieren in php kommt für mich nicht in Frage aus mehreren Gründen.

Jetzt hat gestern mein Provider alles auf suphp umgestellt und jetzt kann niemand mehr meine Seiten aufrufen, da diese immer heruntergeladen werden wollen. Habe dann den Support angeschrieben und die Antwort bekommen, dass der Webserver einen anderen Handler für das PHP erwartet, um genau zu sein diesen:

> application/x-httpd-suphp

Das habe ich dann auch in die .htaccess geschrieben mit folgender Codezeile:

AddType application/x-httpd-suphp .html .htm


Aber wie ihr euch denken könnt, funktioniert das nicht, also weder der vorherige Code noch der jetzige mit suphp. Will ich meine Seite besuchen, kommt immer wieder das Fenster, mit der Frage, ob ich die Seite herunterladen möchte.

Habe ich was falsch gemacht oder hat der Provider irgendwie das Parsen unterbunden?

LG tantchen
 
Ich habe jetzt den Code probiert:

AddHandler application/x-httpd-suphp .html .htm

Der geht auch nicht. Beim Firefox will er weiterhin die Seite herunterladen, beim IE zeigt er die includeten Dateien nicht an.

Siehe hier: www.sittiche.de - statische Startseite ohne php
www.sittiche.de/gesundheit.htm - Seite mit php-includeten Dateien wie Header, Footer, Menü links - die gänzlich fehlen.
 
QUOTE (Tantchen @ Mi 7.03.2012, 10:25) [...] Habe ich was falsch gemacht oder hat der Provider irgendwie das Parsen unterbunden? [...]

Wenn er schlau ist, erlaubt er Dir den Befehl AddType nicht. Aber das solltest Du den Provider fragen und nicht uns.
 
Ich habe ja auch den AddHandler-Befehl benutzt. Aber es werden keine Dateien mehr includet. Die Seite ist jetzt ohne Header, Menüleiste und Footer. Einfach blöd.

Dass eine Versionsnummer angefügt werden muss, denke ich mal nicht, der Admin hat mir ja den Code "application/x-httpd-suphp" ohne Versionsnummer genannt, also wird die Codezeile in der htaccess auch diesen Bestandteil enthalten.


Dem Prov habe ich die Frage ja auch gestellt, bekomme aber seit Stunden keine Antwort und dachte, vielleicht wisst ihr Bescheid.

Der Code für's includen wird sich doch wohl nicht auch geändert haben oder? Der ist doch richtig und gilt doch wohl für die gängigen PHP-Versionen schätze ich mal.
<?php include ("inc/logoheader.htm"); ?>
 
Was spricht eigentlich dagegen nun mal richtig Arbeit da reinzustecken, und dieses Gefrickel grade zu ziehen, indem die Endungen und auch Includes auf .php umbenannt werden? Danach noch einen kurzen Rewrite-Befehl formulieren und gut ist es...
 
Ich habe gerade erst meine 200 Seiten, die diese Präsentation umfasst, erstellt. Habe wirklich keine Lust, da noch mal alle 200 Seiten neu zu programmieren. Das ist kein bisschen Arbeit, wie du es meinst.

Außerdem schrieb ich damals schon, dass ich bei Google seit Jahren gut gelistet bin, und um meine Position nicht zu verlieren, möchte ich die Endung htm für meine 200 Seiten behalten.

Google ist ein Grund, der mir sauer aufstößt. Der Hauptgrund ist, dass ich die Nase voll habe, noch mal alles neu zu programmieren, da ich gerade erst fertig geworden bin und ich habe 4 Monate für das Re-Design gebraucht. Die Energie habe ich einfach nicht, mir das nochmals anzutun und 200 Seiten in php umzuschreiben und dann ein modrewrite laufen zu lassen, was derzeit seltsamerweise auch nicht funktioniert. Die Startseite ohne index.html will immer noch herunterladen, erst wenn ich das index.html eingebe, kommt die Seite. Da stimmt doch was nicht seit der Umstellung.

Außerdem fände ich es eine saubere und einfachere Lösung, eine Zeile in die .htaccess zu stellen und die Sache läuft, wenn denn der Provider mitspielt. Sonst muss ich halt wieder wechseln.

Ich ärgere mich gerade schwarz. Include-Befehle gehen nicht, Startseite lässt sich nicht ohne index.html aufrufen, sonst will sie downloaden.

LG tantchen
 
QUOTE (Tantchen @ Mi 7.03.2012, 12:43)Ich habe gerade erst meine 200 Seiten, die diese Präsentation umfasst, erstellt. Habe wirklich keine Lust, da noch mal alle 200 Seiten neu zu programmieren. Das ist kein bisschen Arbeit, wie du es meinst.
[...]

Ich glaube, ich sagte was davon mal "mal richtig Arbeit da reinzustecken", weiß nicht, wie Du da auf ein bißchen Arbeit kommst. Aber selbst wenn es schlecht programmiert ist (wovon ich mal ausgehen, sonst würden Dich 200 Seiten nicht so schocken) das ein Aufwand von ca. 1 bis 2 Tage. Mit rekrusiven Ersetzen über alle Dateien wohl sogar nur wenige Stunden, die wohl ätzend sind, aber es geht vorbei.




QUOTE (Tantchen @ Mi 7.03.2012, 12:43)[...] Außerdem schrieb ich damals schon, dass ich bei Google seit Jahren gut gelistet bin, und um meine Position nicht zu verlieren, möchte ich die Endung htm für meine 200 Seiten behalten. [...]

Die Endung .htm verlierst Du mittel mod_rewrite nicht, also ist das kein Argument. Sondern Du hast mal wieder nicht meinen Beitrag gelesen/verstanden.




QUOTE (Tantchen @ Mi 7.03.2012, 12:43)[...] Google ist ein Grund, der mir sauer aufstößt. Der Hauptgrund ist, dass ich die Nase voll habe, noch mal alles neu zu programmieren, da ich gerade erst fertig geworden bin und ich habe 4 Monate für das Re-Design gebraucht. Die Energie habe ich einfach nicht, mir das nochmals anzutun und 200 Seiten in php umzuschreiben und dann ein modrewrite laufen zu lassen, was derzeit seltsamerweise auch nicht funktioniert. Die Startseite ohne index.html will immer noch herunterladen, erst wenn ich das index.html eingebe, kommt die Seite. Da stimmt doch was nicht seit der Umstellung. [...]

Tja, um Google kommt man halt nicht drum rum, da sind wir aber alle dran Schuld. Ich weiß nicht, was das Problem ist, selbst Seiten kann man mittels Befehl rekrusive umbenennen, klappt zu mindestens unter Linux recht gut, unter Windows würde ich eben die 10 bis 30 min (eher 10 min rekrusive Dateifunktionen hat man ja meistens als Vorlage rumliegen) investieren und mir eine Funktion schreiben, die das macht.
Wenn mod_rewrite wirklich nicht läuft, weist es eher auf Problemen bei Provider hin, muss angeschaltet werden mittels Befehl oder gehört nicht zum Paket. Mit der Aktivierung von mod_rewrite gibt es aber weniger Probleme als mit anderen kritischen Befehlen.




QUOTE (Tantchen @ Mi 7.03.2012, 12:43)[...] Außerdem fände ich es eine saubere und einfachere Lösung, eine Zeile in die .htaccess zu stellen und die Sache läuft, wenn denn der Provider mitspielt. Sonst muss ich halt wieder wechseln. [...]

Da ist nur ein Problem die Lösung ist auf keinen Fall sauber, sie ist nur einfach. Wechseln dauert braucht auch wieder Zeit und bedeutet Aufwand. Und könnte öfters zu Problemen führen als die umgekehrte Variante.




QUOTE [...] Ich ärgere mich gerade schwarz. Include-Befehle gehen nicht, Startseite lässt sich nicht ohne index.html aufrufen, sonst will sie downloaden. [...]

Tja, index.htm ist auch nicht unbedingt so verbreitet, .htm ist eben nicht die Standardendung für HTML-Dateien.



Letztendlich biste irgendwo auch selbst Schuld, weichst dauernd von gegeben Standards ab, und machst dann ein Redesign, aber ziehst solche elementaren Dinge nicht dabei gerade, obwohl genau dort die Gelegenheit dazu da war.
 
@Sascha:

kannst Du einmal ausführen, welche Problematiken mit PHP in .htm - Dank AddType - auftreten?

Ich nutze das auch, sehe aber kein grosses Problem von .htm nach .php umzubenennen und dann die .php weiterhin unter .htm auszuliefern - mit der htaccess.

Ich fühle einfach (noch) keinen Zwang das zu tun...

Geht es nur um die Cross-Hosting-Provider-Kombatibilität oder gibt es ernstzunehmende Sicherheitsprobleme? Insbesonder auf Bezug zu Deinem ersten Post?

QUOTE Wenn er schlau ist, erlaubt er Dir den Befehl AddType nicht.
 
Kurz: Ich könnte meine xxx.html einfach in xxx.php umbenennen und dann per modrewrite wieder die Endung umschreiben?


Wie müsste die Syntax für die .htaccess lauten, um (fast) alle php-Dateien eines Verzeichnisses auf die Endung htm umzuschreiben, mit Ausnahme der index.php, die dann letztendlich index.html heißen müsste?

Kann man auch php-Dateien ausschließen, die nicht umbenannt werden brauchen, da es bereits fertige Scripte sind? Zum Beispiel setze ich pixlie und diverse andere Scripte ein, die brauchen keine Umbenennung.
 
Ja, Du kannst mittels RegEx bestimmen von wo nach wo Du umbenennst. Linux bietet da mit dem Befehl rename eine gute Syntax. http://linux.die.net/man/1/rename
Und bei PHP schaust prüfst Du dann noch den Dateinamen, wenn Du bereits zwischen Datei oder Ordner unterschieden hast:
CODE // ...
if ( !preg_match('/^(.*?)\.php$/m', $filename) )
{
rename($dir . '/' . $file, $dir . '/' . preg_replace('/^(.*?)\.htm$/m', '$1.php', $file));
}
// ...

Rekrusive Funktionen, die Du damit umbauen kannst, gibt es im Netz ja genügend:
http://www.bimbel.de/artikel/artikel-7.html
http://forum.die-computer-ecke.de/viewtopic.php?f=26&t=1279


Wobei index.php wieder ein Standard ist, und es ist egal, ob bei http://www.domain.tld/ die Datei, die aufgerufen wird sich nun index.php oder index.html nennt.


Im Rootverzeichnis der Website muss nur eine .htaccess sein mit:

CODE RewriteEngine On
RewriteRule ^(.*)\.htm$ $1.php
 
QUOTE (Peter Schneider @ Mi 7.03.2012, 13:47)@Sascha:

kannst Du einmal ausführen, welche Problematiken mit PHP in .htm - Dank AddType - auftreten?
[...]

Nun, der Provider könnte es einfach unterbinden, da es sich Sicherheitskritisch auswirken kann, wenn die Anwendungen nicht entsprechend Dateinamen von hochladenen Dateien Filtern/Umbennnen. Also hängt es auch davon ab, wie genau Deine Anwendung mit hochgeladenen Dateien umgeht.


Für genauere Ausführungen des Problems Verweise ich mal auf meinen Blog: Apache Sicherheit bei Verwendung von PHP

Grobes Beispiel: Damals, als der Beitrag geschrieben wurde, waren viele Apache-Konfiguration nicht Out-Of-The-Box so gesichert, dass nur Dateien mit der Endung .php auch durch den Parser geschickt worden sind. So wurden auch image.php.jpg und image.phpfile.jpg durch diesen geschickt. Ergo musste genau gefiltert werden, was da ankommt, und war/ist auch Abhängig von der Webserverkonfiguration.

Wenn Du nun wieder nur eine Zeile wie diese hinzufügst:

CODE AddType application/x-httpd-php .htm

Reißt Du das Loch für image.htm.jpg und image.htmfile.jpg auf, weil alle Dateien, welche den String ".htm" beinhalten als PHP geparst werden. Also musst Du das filtern in der Anwendung.

Und nun kommt das perfide dabei, wenn der Benutzer den AddType setzen könnte und die auf .jpg macht, würde er die Schutzfunktion sehr wahrscheinlich von den meisten Anwendungen unter Garantie aushebeln, deswegen sollte man als Provider den Benutzer nicht erlauben den Befehl AddType zu nutzen. Und selbst in einer gesicherten Umgebung ist ein Angreifer, der beliebigen PHP-Code aufführen ein großes Sicherheitsrisiko.



Alles weitere ist einfach nur Vermeidung von Problemen.
 
CODE // ...
if ( !preg_match('/^(.*?)\.php$/m', $filename) )
{
rename($dir . '/' . $file, $dir . '/' . preg_replace('/^(.*?)\.htm$/m', '$1.php', $file));
}
// ...


und dieser obige Code muss auch in die .htaccess oder wo kommt dieser hin?
 
Nein, ich kann nur HTML. Ich bin eine 52jährige Hausfrau mit einer Hobbyseite
biggrin.gif
und habe sowas nie gelernt.
 
das Problem hatte ich auch mit meinem einen Provider - kurz vorm WE ohne Vorwarnung wurde etwas umgestellt und dann war dort am WE niemand erreichbar. Nach Ablauf des jetzt bezahlten Jahres sind die Domains dort auch weg.
Nach der Erklärung war die Änderung zwar nachvollziehbar, aber ich erwarte schon, dass man vor solch grundlegenden Änderungen informiert wird, so dass ma selbst Ausfallzeiten vermeiden kann...und nicht dass die Seite dann tagelang nicht erreichbar ist, weil sowas auch unbedingt direkt vorm WE (an dem der Support nicht erreichbar ist) gemacht wird....
Bei mir wurde mir dann mitgeteilt, das phpinclude deaktiviert wurde - die inlcudes müssen als Dateipfad (und nicht als http://-Adresse) eingefügt werden.
Eventuell ist das bei Dir ja auch das Problem
 
Die includes sind bei mir als Dateipfad integriert.

Habe aber vorhin eine kurze Antwort bekommen, dass ich den AddHandler erst mal aus der .htaccess rausnehmen soll. Er soll dann per Confixx erzeugt werden, damit der Handler beim Update auf Debian 6.0 auch angepasst werden kann.

Weiß zwar nicht, was das ganz genau bedeutet, aber ich kann zur Zeit wohl nichts machen und muss abwarten, bis die Admins sich der Sache annehmen, da ich ja an Confixx nicht herumschrauben kann, habe nur Webspace und keinen Server.
 
Zurück
Oben