Mod_autoindex und CSS
Occidere
- webserver
Ich habe ein DIR-Listing (http://lager.autisma.net) mit einigen Einträgen in der .htaccess bzw. etwas CSS und HTML frisiert, im Grunde bin ich damit zufrieden - nur leider sind einige Details nicht so wie ich sie möchte, und ich schaffe es nicht sie zu beseitigen.
Den Kopf habe ich mit HeaderName verändert und den Fuss mit ReadmeName, schaut man sich den Quelltext an so bemerkt man daß im "echten" Dokumentenkopf noch
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<HTML>
<HEAD>
<TITLE>Index of /</TITLE>
</HEAD>
<BODY>
vom eigentlichen DIR-Listing steht, darunter folgt dann mein geschriebener Kopfteil. Das selbe in grün im ReadmeName-Teil.
Frage: Ist es möglich per .htaccess o.ä. den original Kopfteil zu löschen oder zu modifizieren, so das mein geschriebener Kopf alleine im Quelltext steht?
Opera und Mozilla zeigen übrigens alle CSS-Angaben korrekt an, nur der IE lädt aus irgendeinem Grund keine Hintergrundbilder. Hängt das evtl. mit dem Header-Problem zusammen?
Sachdienliche Hinweise sind sehr willkommmen.
In diesem Sinne,
O.
hallo,
Ich habe ein DIR-Listing (http://lager.autisma.net) mit einigen Einträgen in der .htaccess bzw. etwas CSS und HTML frisiert
Dir ist bekannt, daß laut http://httpd.apache.org/docs-2.0/mod/mod_autoindex.html#readmename die Anweisung ReadmeName in .htaccess verwendet werden kann, das ist gut so. Aber du mußt dich von der Vorstellung lösen, daß die Datei, die du damit festlegst, valides HTML sein muß, insbesondere sollte sie selbst gar keinen der normalerweise nötigen Header enthalten.
Den Kopf habe ich mit HeaderName verändert und den Fuss mit ReadmeName
Mit "HeaderName datei.htm" hast du u.a. festgelegt, daß die in dieser "datei.htm" eingebundenen CSS-Formatierungen auf dein Directorylisting zutreffen sollen. Eine zusätzliche Datei für irgendeinen "Fuß" bringt eigentlich nur Verwirrung und sollte fortgelassen werden, wenn dir nicht ganz klar ist, was du da tust. "ReadmeName" sollte das enthalten, was _unterhalb_ des Listings eventuell noch angezeigt werden soll (sie wird erst nach dem Listing angehängt). Das heißt, die dafür vorgesehene Datei sollte nur diejenigen HTML-tags enthalten, die du bei "normalen" HTML-Dokumenten innerhalb von <body></body> schreiben würdest, und keinerlei andere Dinge.
schaut man sich den Quelltext an so bemerkt man daß im "echten" Dokumentenkopf noch
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
Eigentümlicherweise gibt der Apache da selbst noch HTML 3.2 vor, da hat die Apache Software Foundation irgendwas übersehen oder es gibt Gründe dafür, die in der Doku nicht zu finden sind.
Richtig ist, daß dir das "vorgeschrieben" wird. Also laß in deiner "HeaderName"-Datei doch ganz einfach doctype und _alle_ Headerzeilen weg. Noch einfacher machst du es dir, wenn du eben keine HTML-Datei dafür verwendest, sondern irgendeine Textdatei, in der beispielsweise nichts anderes steht als:
<style type="text/css">
[CSS-Festlegungen]
</style>
<p>hier kommt jetzt das listing:</p>
Es _darf_ da auch kein </body></html> als Abschluß stehen, das generiert Apache wieder selbst.
Frage: Ist es möglich per .htaccess o.ä. den original Kopfteil zu löschen oder zu modifizieren, so das mein geschriebener Kopf alleine im Quelltext steht?
Nein. Gestalte die Datei, die du mit "HeaderName" ansprechen willst, ohne Headerbereich, das ist alles. Mit .htaccess kannst du nur festlegen, aus welcher Datei die Informationen für dein Listing ausgelesen werden sollen.
Grüße aus Berlin
Christoph S.
Gut, zähneknirschend habe ich die Dateien entsprechend modifiziert, ich danke für die Hinweise. - Wie sieht es eigentlich in deinem IE, solltest du einen zur Hand haben, aus? Lädt er die Hintergrundinformationen, oder bleibt der Hintergrund persilweiß? - Es ist komisch, der IE verarbeitet alle CSS-Informationen bis auf die für den Hintergrund.
Auch hier bin ich für sachdienliche Hinweise sehr dankbar.
O.
hi,
Es ist komisch, der IE verarbeitet alle CSS-Informationen bis auf die für den Hintergrund.
Daran ist gar nichts komisch. Solange du in deiner CSS stehen hast:
background:url("icons/bgr.jpg")#cccccc repeat;
kann der IE damit nichts anfangen. Mach noch
background-image:url("icons/bgr.jpg");
daraus, dann spielt auch der IE mit. "repeat" und "#ccc" kannst du getrost weglassen.
Grüße aus Berlin
Christoph S.
Servus,
Daran ist gar nichts komisch. Solange du in deiner CSS stehen hast:
background:url("icons/bgr.jpg")#cccccc repeat;
kann der IE damit nichts anfangen. Mach noch
background-image:url("icons/bgr.jpg");
daraus, dann spielt auch der IE mit. "repeat" und "#ccc" kannst du getrost weglassen.
Seit wann kann man "repeat" weglassen, wenn man eine Grafik wiederholen möchte? Die zusätzlichen Farbinformationen habe ich für die Benutzer gesetzt, die Bilder in ihrem Benutzerklienten deaktiviert haben. Ich habe mir da schon was bei gedacht. Des weiteren habe ich gelernt das man die Informationen für den Hintergrund in "Background" zusammenfassen kann, deswegen diese Schreibweise.
Der Fehler im IE ist behoben, er reagiert etwas sensibel auf die Reihenfolge der Atribute im "Background"-Bereich, bzw. auf einen unabsichtlichen Druck auf die Leertaste.
hi,
Seit wann kann man "repeat" weglassen, wenn man eine Grafik wiederholen möchte?
schon immer, weil repeat der initialwert für background-repeat ist.
gruß,
wahsaga
Hi,
Seit wann kann man "repeat" weglassen, wenn man eine Grafik wiederholen möchte?
Mindestens seit CSS 1 - repeat ist initial value für background-repeat.
Des weiteren habe ich gelernt das man die Informationen für den Hintergrund in "Background" zusammenfassen kann, deswegen diese Schreibweise.
Wenn es tatsächlich so wie von Christoph zitiert(?) als
background:url("icons/bgr.jpg")#cccccc repeat;
angegeben ist, ist es falsch, weil ein whitespace fehlt.
cu,
Andreas
hi,
Wenn es tatsächlich so wie von Christoph zitiert(?) als
background:url("icons/bgr.jpg")#cccccc repeat;
angegeben ist, ist es falsch, weil ein whitespace fehlt.
Ja, so war es tatsächlich in der ursprünglichen CSS. Jetzt ist daraus
background:#cccccc url("icons/bgr.jpg") repeat;
geworden.
Grüße aus Berlin
Christoph S.
Hi,
Ich habe ein DIR-Listing (http://lager.autisma.net) mit einigen Einträgen in der .htaccess bzw. etwas CSS und HTML frisiert, im Grunde bin ich damit zufrieden - nur leider sind einige Details nicht so wie ich sie möchte, und ich schaffe es nicht sie zu beseitigen.
Den Kopf habe ich mit HeaderName verändert und den Fuss mit ReadmeName, schaut man sich den Quelltext an so bemerkt man daß im "echten" Dokumentenkopf noch
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<HTML>
<HEAD>
<TITLE>Index of /</TITLE>
</HEAD>
<BODY>
vom eigentlichen DIR-Listing steht, darunter folgt dann mein geschriebener Kopfteil. Das selbe in grün im ReadmeName-Teil.
Frage: Ist es möglich per .htaccess o.ä. den original Kopfteil zu löschen oder zu modifizieren, so das mein geschriebener Kopf alleine im Quelltext steht?
Ein kurzer Blick in die Dokumentation des 1.3-Apache (http://httpd.apache.org/docs/mod/mod_autoindex.html#headername) hätte genügt, um das zu finden:
If the file specified by HeaderName contains the beginnings of an HTML document (<HTML>, <HEAD>, etc) then you will probably want to set
IndexOptions +SuppressHTMLPreamble
, so that these tags are not repeated.
(steht wortwörtlich auch in der Doku für den 2.x-Apache)
cu,
Andreas
hallo Andreas,
Ein kurzer Blick in die Dokumentation des 1.3-Apache (http://httpd.apache.org/docs/mod/mod_autoindex.html#headername) hätte genügt
Schon richtig. Aber er bindet ja sowohl HeaderName wie auch ReadmeName ein, daher bin ich darauf gar nicht erst eingegangen. Wenn unter ReadmeName eine zweite vollständige (inclusive doctype etc.) HTML-Datei angesprochen wird, hast du das Problem der "doppelten Header" auch wieder.
Grüße aus Berlin
Christoph S.
Hi,
Ein kurzer Blick in die Dokumentation des 1.3-Apache (http://httpd.apache.org/docs/mod/mod_autoindex.html#headername) hätte genügt
Schon richtig. Aber er bindet ja sowohl HeaderName wie auch ReadmeName ein, daher bin ich darauf gar nicht erst eingegangen. Wenn unter ReadmeName eine zweite vollständige (inclusive doctype etc.) HTML-Datei angesprochen wird, hast du das Problem der "doppelten Header" auch wieder.
Ja, aber.
Er will CSS verwenden. Apache generiert einen HTML 3.2-Doctype.
HTML 3.2 kennt kein nutzbares style-Element (<!-- SCRIPT/STYLE are place holders for transition to next version of HTML -->) und kein style-Attribut. Beim Link-Element steht dort auch nichts von stylesheet ...
Also muß er bei HeaderName eine Datei angeben, die einen für CSS geeigneten Doctype angibt (und auch das style-Element - welches ja auch nur im head zulässig ist).
Also muß er auch die IndexOptions entsprechend setzen.
Daß keine kompletten HTML-Dokumente angegeben werden können, ergibt sich eigentlich schon dadurch, daß die Dateien ja mit weiteren Fragmenten (mindestens dem eigentlichen Index) zusammengemischt werden. Daß man darauf kommt, setze ich eigentlich voraus, nicht nur wegen der Teilnahme im Forum (Siehe Text über dem Forum - "Grundkenntnisse" usw.), sondern auch, weil Webserverkonfiguration nicht für HTML/HTTP-Anfänger sinnvoll ist.
cu,
Andreas
Hallo,
Er will CSS verwenden. Apache generiert einen HTML 3.2-Doctype.
HTML 3.2 kennt kein nutzbares style-Element (<!-- SCRIPT/STYLE are place holders for transition to next version of HTML -->) und kein style-Attribut. Beim Link-Element steht dort auch nichts von stylesheet ...
Was im rel/rev-Attribut stehen darf, war nie autoritativ festgelegt, also bedarf es keiner expliziten Nennung des Hyperlinktyps »stylesheet«, damit dieser erlaubt ist. »HTML link relationships are as yet unstandardized, although some conventions have been established.« Es wird in HTML 3.2 durchaus allgemein auf Stylesheets hingewiesen: »LINK elements can be used in principle: (...) c. for linking associated resources such as style sheets and scripts« (jeweils http://www.w3.org/TR/REC-html32). Das war schon in HTML 2.0 angelegt: »The LINK element is typically used to indicate (...) associated resources such as style sheets, etc.« (http://www.w3.org/MarkUp/html-spec/html-spec_5.html#SEC5.2.4) Man kann dadurch problemlos HTML-2.0-Dokumente mit CSS formatieren.
Davon abgesehen verstehe ich Christophs Lösungsansatz ebenfalls nicht.
Mathias
Servus,
»»
»» Ein kurzer Blick in die Dokumentation des 1.3-Apache (http://httpd.apache.org/docs/mod/mod_autoindex.html#headername) hätte genügt, um das zu finden:
»»
»» If the file specified by HeaderName contains the beginnings of an HTML document (<HTML>, <HEAD>, etc) then you will probably want to set
»» IndexOptions +SuppressHTMLPreamble
»» , so that these tags are not repeated.
»»
»» (steht wortwörtlich auch in der Doku für den 2.x-Apache)
»»
habe ich ausprobiert, aber aus welchem Grund auch immer bekomme ich dann einen Internen Serverfehler. Im Moment schaut der ausschlaggebende Teil meiner .htaccess so aus:
Options +Indexes
Damit läuft alles ohne Serverfehler, setze ich jedoch das "SuppressHTMLPreamble" mit dabei, so wird der Dienst verweigert.
Gruß,
O.
Hi,
IndexOptions +SuppressHTMLPreamble
Options +Indexes
Damit läuft alles ohne Serverfehler, setze ich jedoch das "SuppressHTMLPreamble" mit dabei, so wird der Dienst verweigert.
Fällt Dir nix auf?
cu,
Andreas
Servus,
Fällt Dir nix auf?
cu,
Andreas
doch, und jetzt sollte ich mich eigentlich schämen. Es ist nun alles so wie es sein soll. Ich habe dank für den kleinen tritt in den Hintern.
In diesem Sinne,
O.