Jan Setzer: htaccess // ErrorDocument 404 ... // WAS wurde nicht gefunden???

Hallo Newsgroup,

ich stehe vor folgendem Problem und bin für Eure Hilfe dankbar:

In einer .htaccess-Datei eines Unterverzeichnisses habe ich eine entsprechende fehler404-Seite angegeben, diese auch angelegt. So weit funktioniert alles prima, d.h. sobald ich eine Adresse angebe, die nicht existiert, erscheint meine Fehler404-Seite.

Jetz würde ich auf dieser Fehler404-Seite gerne ausgeben, welche Seite/Adresse denn nicht gefunden wurde.

Das hat folgenden Hintergrund: Ich plane an einem bestimmten Stichtag nach und nach Seiten in dieses Unterverzeichnis zu packen (Wahlergebnisse). Die Seiten selbst existieren jetzt noch nich. Die Navigation dafür soll aber schon einige Zeit vorher online sein. Ich möchte am Wahlabend nicht noch an meinem Navigationsmenü herumbasteln, daher: Erst Navigation mit "toten" Links, dann die Seiten nachschieben. Klickt dann also jemand vor diesem Stichtag auf einen Link in meiner schon existierenden Navigation, so soll ihm diese Fehler404-Seite darauf hinweisen, dass noch keine Wahlergebnisse für genau diesen Link vorliegen. Sobald ich aber am Wahlabend eine entsprechende Unterseite in das Verzeichnis gepackt habe, wird die (dann existierende) Seite über den selben Link ganz normal angezeigt. Ich mißbrauche damit sozusagen die file not found-Funktion.

Wäre halt schön, wenn die Fehlerseite nicht nur sagen würde, dass irgendeine Seite nicht gefunden wurde, sondern dass noch keine Daten für genau die Seite XYZ vorliegen.

Ist es z.B. über JS möglich, die angegebene Adresse (also die Seite, die nicht gefunden wurde) innerhalb der Fehler404-Datei anzuzeigen?

Sorry, ich habe mich super-schlecht ausgedrückt, hoffentlich versteht ihr mein Anliegen ;-)

Vielen Dank für eure Hilfe!
Jan Setzer

Hinweis: Ich kann hierbei leider nicht mit serverseitiger Programmierung/Datenbanken arbeiten, sonst wäre es sicher leichter

  1. Hallo,

    Hallo Newsgroup,

    Das ist wirklich ein ganz schlimmer Irrtum. Dies ist hier ein Forum.

    Ist es z.B. über JS möglich, die angegebene Adresse (also die Seite, die nicht gefunden wurde) innerhalb der Fehler404-Datei anzuzeigen?

    Wenn du SSI (Server Side Includes) am Server verwenden kannst, geht das um einiges einfaher:
    z.B:
    <p> Die Seiten: <!--#echo var="HTTP_REFERER" --> hat noch kein Wahlergebniss</p>

    Probiere es mal einfach aus, wenn nicht geht,  kannst du folgende zwei Zeilen in deinem .htaccess einfügen:
        AddType text/html .shtml
        AddHandler server-parsed .shtm

    Grüße
    Thomas

    1. Hallo Thomas,

      danke für die schnelle Antwort und 1000 Entschuldigungen für meinen "Newsgroup-Ausrutscher"!

      Ich habe die Vorschläge auf gut Glück ausprobiert, darf aber leider keine SSI einbinden.

      Zwischenzeitlich hatte ich schon probiert, den Referrer über JS (document.referrer) auszugeben. Leider zeigt er mir aber nur die übergeordnete Frame-Seite index.html als Referrer an, nicht aber den toten Link.

      Danke trotzdem für die Hinweise!!!
      Gruß,
      Jan

      Ist es z.B. über JS möglich, die angegebene Adresse (also die Seite, die nicht gefunden wurde) innerhalb der Fehler404-Datei anzuzeigen?

      Wenn du SSI (Server Side Includes) am Server verwenden kannst, geht das um einiges einfaher:
      z.B:
      <p> Die Seiten: <!--#echo var="HTTP_REFERER" --> hat noch kein Wahlergebniss</p>

      Probiere es mal einfach aus, wenn nicht geht,  kannst du folgende zwei Zeilen in deinem .htaccess einfügen:
          AddType text/html .shtml
          AddHandler server-parsed .shtm

    2. Hi,

      Probiere es mal einfach aus, wenn nicht geht,  kannst du folgende zwei Zeilen in deinem .htaccess einfügen:
          AddType text/html .shtml
          AddHandler server-parsed .shtm

      Options +Includes

      nicht vergessen.

      cu,
      Andreas

      --
      Der Optimist: Das Glas  ist halbvoll.  - Der Pessimist: Das Glas ist halbleer. - Der Ingenieur: Das Glas ist doppelt so groß wie nötig.
  2. Nachtrag:

    Dein 404.html muss du auf 404.shtml dann umbenennen!

    Grüße
    Thomas

  3. Moin!

    In einer .htaccess-Datei eines Unterverzeichnisses habe ich eine entsprechende fehler404-Seite angegeben, diese auch angelegt. So weit funktioniert alles prima, d.h. sobald ich eine Adresse angebe, die nicht existiert, erscheint meine Fehler404-Seite.

    Wäre halt schön, wenn die Fehlerseite nicht nur sagen würde, dass irgendeine Seite nicht gefunden wurde, sondern dass noch keine Daten für genau die Seite XYZ vorliegen.

    Ich hab mir die verlinkte Webseite mal angesehen.

    Darf ich dein Anliegen so umschreiben: Du hast eine _allgemeine_ 404-Fehlerseite, die derzeit nur einen allgemeinen Text ("Wahrscheinlich gibts noch kein Wahlergebnis, die Seite wurde jedenfalls nicht gefunden") enthält. Du hättest aber gerne eine Seite "Für den Wahlbezirk XYZ liegen noch keine Ergebnisse vor", wenn man auf den Link mit "Bezirk XYZ" klickt.

    Hm, die Lösung ist eigentlich ganz einfach - genauer gesagt gäbe es zwei Lösungen.

    Möglichkeit 1 (geht immer): Wenn du jetzt schon für jede später mit Wahlergebnissen zu füllende Seite eine leere Seite mit dem gewünschten Text ablegst, dann ist absolut unmißverständlich klar: Die Seite für Bezirk XYZ wurde abgerufen, die Seite existiert auch, und auf der Seite steht _jetzt_: "Noch keine Ergebnisse da", und _später_ trägst du auf der dann vorhandenen Seite die Ergebnisse ein. Dabei ist es sogar vollkommen uninteressant, ob du die jetzt angelegte Seite editierst, oder rigoros überschreibst.

    Error 404 ist wirklich nur dafür da, zu kennzeichnen, dass eine Ressource nicht vorhanden ist. :)

    Möglichkeit 2: Wenn dir wirklich sehr viel am Statuscode 404 liegt, könntest du die in diesem Verzeichnis auszuliefernden Dateien vielleicht auch als "asis"-Dateien ablegen. Der Apache-Webserver erlaubt über einen speziellen Handler, dass man Ressourcen (also nicht nur HTML-Dateien) inklusive der zu sendenden HTTP-Header auf dem Server ablegt. Das entspricht im Prinzip den Möglichkeiten, die beispielsweise ein Perl-Skript hat: Content-Type und vielleicht auch Status-Code müssen in den ersten Zeilen bestimmt werden, dann kommt eine Leerzeile, um den Header abzutrennen, und dann der Body mit (in deinem Fall) HTML drin.

    Siehe dazu auch: http://httpd.apache.org/docs/mod/mod_asis.html

    Da dieses mod_asis (asis ist übrigens als "as is" - "so wie es ist" zu verstehen) nichts besonderes braucht und keine Performance benötigt, stehen die Chancen gut, dass es bei deinem Provider aktiv ist und benutzt werden kann. Die Doku schlägt vor (und so ist es standardmäßig auch konfiguriert), dass die Datei mit diesem speziellen Feature auf ".asis" enden soll. Probier's mal aus.

    Du kannst dieses Verhalten möglicherweise via .htaccess auf alle .html-Dateien in diesem speziellen Verzeichnis übertragen (eine Zeile "AddHandler send-as-is html" sollte reichen). Dann werden die auch "asis" ausgeliefert. Du solltest aber, wenn du den wirklichen Content einträgst, den Header beibehalten - und ihn entfernen, sobald du alle Dateien komplett hast, und dann auch "asis" wieder abschalten.

    - Sven Rautenberg

    --
    "Bei einer Geschichte gibt es immer vier Seiten: Deine Seite, ihre Seite, die Wahrheit und das, was wirklich passiert ist." (Rousseau)