Werner: htaccess textausgabe

hallo liebe Spezialisten,

tagelang probiere ich folgendes Problem zu lösen

Bei Aufruf einer Domain soll eine HTMLausgabe erfolgen die in einer htaccess definiert ist Dass das mit ErrorDocument funktioniert ist mir klar

# HTML für individuelle Fehleranzeige ErrorDocument 404 "<html><head><title>Seite nicht vorhanden</title>\ <style type='text/css'>\ body {background-color:#EEEEEE;}\ h1,p,a {font-family:Helvetica,Arial,Sans-serif;}\ h1 {font-size:1.7em; margin-bottom:0em;}\ p {font-size:0.95em;}\ a {font-size:0.93em; text-decoration:none;}\ a:link,a:visited {color:#000080;}\ a:hover {color:#FF0000;}\ </style>\ </head><body>\ <h1>Fehler 404</h1>\ <p>Die angeforderte URL kann nicht gefunden werden.</p>\ <p>Probieren Sie es bitte erneut mit einem Aufruf der\ <a href='/'>Startseite</a>.</p>\ </body></html>"

nur wie mache ich das bei 200 OK ?

Es geht nicht um Fehlermeldungen. Es geht um eine spezielle Ausgabe bei Aufruf der Domain die nur in der htaccess und nicht in einer Datei definiert wird

jetzt schon Danke für eure Tipps Werner

  1. Tach,

    HTML für individuelle Fehleranzeige ErrorDocument 404 "<html><head><title>Seite nicht vorhanden</title>\ <style type='text/css'>\ body {background-color:#EEEEEE;}\ h1,p,a {font-family:Helvetica,Arial,Sans-serif;}\ h1 {font-size:1.7em; margin-bottom:0em;}\ p {font-size:0.95em;}\ a {font-size:0.93em; text-decoration:none;}\ a:link,a:visited {color:#000080;}\ a:hover {color:#FF0000;}\ </style>\ </head><body>\ <h1>Fehler 404</h1>\ <p>Die angeforderte URL kann nicht gefunden werden.</p>\ <p>Probieren Sie es bitte erneut mit einem Aufruf der\ <a href='/'>Startseite</a>.</p>\ </body></html>"
    

    und das funktioniert? Ich wäre davon ausgegegangen, dass der Apache hier einen Content Type text/plain schickt und die Browser das entsprechend ausgeben (außer vielleicht der IE).

    nur wie mache ich das bei 200 OK ?

    Diese Frage ergibt nicht viel Sinn, einen 200 sendet der Apache, wenn er die angefragte Ressource gefunden hat und ausliefern kann

    Es geht nicht um Fehlermeldungen. Es geht um eine spezielle Ausgabe bei Aufruf der Domain die nur in der htaccess und nicht in einer Datei definiert wird

    Am nächsten ran käme man da vermutlich mit einer Type Map und https://httpd.apache.org/docs/2.4/mod/mod_negotiation.html ran, aber selbst da ist die Type Map eine externe Datei; da kann man also auch direkt, ne HTML-Datei anlegen und per mod_rewrite oder mod_alias auf diese verweisen. mod_redirect ist keine Alternative, weil es keine Statuscodes außerhalb der 300er-Range schickt.

    mfg
    Woodfighter

  2. Hallo und guten Nachmittag,

    tagelang probiere ich folgendes Problem zu lösen

    Bei Aufruf einer Domain soll eine HTMLausgabe erfolgen die in einer htaccess definiert ist Dass das mit ErrorDocument funktioniert ist mir klar

    # HTML für individuelle Fehleranzeige ErrorDocument 404 "<html><head><title>Seite nicht vorhanden</title>\ <style type='text/css'>\ body {background-color:#EEEEEE;}\ h1,p,a {font-family:Helvetica,Arial,Sans-serif;}\ h1 {font-size:1.7em; margin-bottom:0em;}\ p {font-size:0.95em;}\ a {font-size:0.93em; text-decoration:none;}\ a:link,a:visited {color:#000080;}\ a:hover {color:#FF0000;}\ </style>\ </head><body>\ <h1>Fehler 404</h1>\ <p>Die angeforderte URL kann nicht gefunden werden.</p>\ <p>Probieren Sie es bitte erneut mit einem Aufruf der\ <a href='/'>Startseite</a>.</p>\ </body></html>"
    

    nur wie mache ich das bei 200 OK ?

    Du fragst die Ressource an und wenn sie vorhanden ist, wird versucht, sie auszuliefern. Vorab sendet der Webserver dann den Status 200 und die Metadaten zur Ressource.

    Es geht nicht um Fehlermeldungen. Es geht um eine spezielle Ausgabe bei Aufruf der Domain die nur in der htaccess und nicht in einer Datei definiert wird

    Wozu ist denn ein Webserver da?

    Rüchtüüg: er soll Requests auf Ressourcen möglichst mit deren Auslieferung bedienen.

    Da Du üblicherweise nicht auf die Ressource .htrequest prüfst, sondern auf eine andere, beziehen sich die Statusmeldungen auch alle auf diese Ressource. Liefer doch einfach die angefragte Ressource aus und schreib dort hinein, was Du sonst in die .htaccess für das ErrorDocument reingeschreiben hättest. Der Client merkt da keinen Unterschied, ob die Info nun aus der .htaccess geliefert wird oder aus einer Datei.

    Grüße
    TS

    1. hi TS,

      ich hab mich da vielleicht eswas blöd ausgedrückt. Es hat nichts mit 200 OK zu tun.

      Ich suche einfach eine Möglichkeit via htaccess eine Meldung auszugeben die in der htaccess hardcodiert ist

      Die einzige Möglichkeit die ich gefunden habe war bei SELFHTML die ErrorDocument Lösung

      Was bei einem Error funktioniert muss doch auch generell möglich sein ?

      Werner

      1. Tach,

        Was bei einem Error funktioniert muss doch auch generell möglich sein ?

        wie schon in längeren Worten geschrieben, nein. Was ist das eigentliche Ziel der Aktion, vielleicht gibt es ja einen anderen eg zu erreichen, was du vorhast.

        mfg
        Woodfighter

        1. Moin!

          Tach,

          Was bei einem Error funktioniert muss doch auch generell möglich sein ?

          wie schon in längeren Worten geschrieben, nein. Was ist das eigentliche Ziel der Aktion, vielleicht gibt es ja einen anderen eg zu erreichen, was du vorhast.

          Oder anders gefragt: Welche URL willst du vom Server abrufen, und was soll das Ergebnis sein (sowohl HTTP-Statuscode als auch Inhalt der Rückgabe)?

          Und warum keine Datei?

          Grüße Sven

          1. Moin!

            Tach,

            Was bei einem Error funktioniert muss doch auch generell möglich sein ?

            wie schon in längeren Worten geschrieben, nein. Was ist das eigentliche Ziel der Aktion, vielleicht gibt es ja einen anderen eg zu erreichen, was du vorhast.

            Oder anders gefragt: Welche URL willst du vom Server abrufen, und was soll das Ergebnis sein (sowohl HTTP-Statuscode als auch Inhalt der Rückgabe)?

            Und warum keine Datei?

            Grüße Sven

            Sven der andere Weg ist mir bekannt AddOutputFilterByType SUBSTITUTE

            Nur es ist doch Schwachsinn und eine Mücke mit einem Elefant totgeschlagen wenn bei Aufruf der Domain "meine Ausgabe" ausgegeben werden soll, die aus den Servervariablen mit mod_rewrite ermittelt wird... und nein es gibt keine Dateien, es gibt nur die htaccess.

            Werner

            ..und nein, es gibt keine Datei

            1. Tach,

              Sven der andere Weg ist mir bekannt AddOutputFilterByType SUBSTITUTE

              damit kannst du zwar Einfluss auf den Request-Body nehmen, aber keine Response erzeugen.

              Nur es ist doch Schwachsinn und eine Mücke mit einem Elefant totgeschlagen

              sorry, aber das Argument ist ziemlich lächerlich, solange du das Problem mit einem Apache lösen willst.

              wenn bei Aufruf der Domain "meine Ausgabe" ausgegeben werden soll, die aus den Servervariablen mit mod_rewrite ermittelt wird... und nein es gibt keine Dateien, es gibt nur die htaccess.

              Dann sieh dich nach einem anderen Webserver um, der kann, was du willst (oder implementiere einen); der Apache kann es relativ sicher nicht und das ist auch gut so, Nutzdaten sind nunmal keine Konfiguration und sollten von dieser getrennt werden.

              mfg
              Woodfighter

              1. Hallo und guten Morgen,

                Dann sieh dich nach einem anderen Webserver um, der kann, was du willst (oder implementiere einen); der Apache kann es relativ sicher nicht und das ist auch gut so, Nutzdaten sind nunmal keine Konfiguration und sollten von dieser getrennt werden.

                Mal dumm gefragt: er könnte sich doch einen eigenen Handler erstellen?
                http://httpd.apache.org/docs/2.2/handler.html

                Da kann man doch bestimmt etwas verbiegen.

                Grüße
                TS

                1. Tach,

                  Mal dumm gefragt: er könnte sich doch einen eigenen Handler erstellen?
                  http://httpd.apache.org/docs/2.2/handler.html

                  damit kann man, soweit ich weiß, darauf reagieren, wenn die entsprechende Datei gefunden wurde bzw. welche der mehreren Dateien gefunden werden soll; außer im Falle der erwähnten type-map.

                  mfg
                  Woodfighter

            2. Moin!

              Könntest du die erste Frage beantworten?

              Die hier:

              Oder anders gefragt: Welche URL willst du vom Server abrufen, und was soll das Ergebnis sein (sowohl HTTP-Statuscode als auch Inhalt der Rückgabe)?

              Dazu gibts auch noch keine befriedigende Antwort, zumindest keine, die die Hintergründe nachvollziehbar erklärt. Möglich, dass man durch Beantworten der ersten Frage mehr Erkenntnisse auch zu dieser zweiten Frage gewinnt.

              Und warum keine Datei?

              ..und nein, es gibt keine Datei

              ... das erklärt halt das Warum nicht.

              Grüße Sven

  3. Hallo Werner,

    ich frage noch mal nach, was du erreichen willst:

    Egal, welche Seite der Domain aufgerufen wird, soll ein Ersatztext erscheinen?

    Muss dieser Ersatztext unbedingt per .htaccess definiert werden?

    Kannst du außer der .htaccess auch andere Dateien anlegen oder ändern?

    Gruß Jürgen

    1. Hallo Werner,

      ich frage noch mal nach, was du erreichen willst:

      Egal, welche Seite der Domain aufgerufen wird, soll ein Ersatztext erscheinen?

      Muss dieser Ersatztext unbedingt per .htaccess definiert werden?

      Kannst du außer der .htaccess auch andere Dateien anlegen oder ändern?

      Gruß Jürgen

      Hallo Jürgen,

      nein, außer der htaccess gibt es nichts. und auch wenn andere der Meinung sind es geht nicht, geht es doch.

      In dem alle Anfragen an die Domain mit mod_rewrite in der htaccess abgefangen werden und die Ausgabe mit mod_substitute beliebig geändert werden kann.

      Nur wie gesagt ist dass irrsinn und Resource Verschwendung!

      Ich will nur eine Textausgabe definiert in der htaccess

      Werner

      1. Hallo,

        nein, außer der htaccess gibt es nichts.

        Kannst du bitte mal erläutern, warum es außer htaccess nichts gibt? Das Szenario scheint doch eher ungewöhnlich zu sein.

        Gruß
        Kalk

      2. Tach,

        In dem alle Anfragen an die Domain mit mod_rewrite in der htaccess abgefangen werden und die Ausgabe mit mod_substitute beliebig geändert werden kann.

        könntest du die Config dafür mal posten; ich bin da ja echt neugierig.

        Nur wie gesagt ist dass irrsinn und Resource Verschwendung!

        Du möchtest Apache und im speziellen auch noch .htaccess nutzen, um eine statische Seite auszuliefern; das was du machen willst, dürfte da ressoucenmäßig nicht mehr viel ins Gewicht fallen.

        mfg
        Woodfighter

      3. Hallo und guten Morgen,

        ich frage noch mal nach, was du erreichen willst: Egal, welche Seite der Domain aufgerufen wird, soll ein Ersatztext erscheinen? Muss dieser Ersatztext unbedingt per .htaccess definiert werden? Kannst du außer der .htaccess auch andere Dateien anlegen oder ändern?

        nein, außer der htaccess gibt es nichts.

        Dann liefert der Apache entweder eine eigene Index-Seite aus oder sucht nach der ersten auffindbaren Datei laut DirectoryIndex. Das ist auf üblichen Systemen meistens eine index.php.

        Was nun genau passiert, wenn in der .htaccess die IndexOptions auf -Indexes steht und DirectoryIndex einfach leer ist, habe ich noch nicht ausprobiert.

        Könntest Du ja mal tun.

        Grüße
        TS

        1. Mahlzeit,

          Was nun genau passiert, wenn in der .htaccess die IndexOptions auf -Indexes steht und DirectoryIndex einfach leer ist, habe ich noch nicht ausprobiert.

          Könntest Du ja mal tun.

          den Fall hatte ich irgendwann mal aus Veresehen. IIRC antwortet der Indianer dann mit 403.

          So long,
           Martin