Seiten beim Aufruf automatisch erstellen

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Seiten beim Aufruf automatisch erstellen

    Hallo,
    ich war hier schon lange nicht mehr aktiv und die Suche ergab leider auch keine nützlichen Ergebnisse. Für ein kleines Projekt bräuchte ich folgende Funktion:

    Ein Besucher kommt auf meine Domain und öffnet eine Seite (.html oder .php) die nicht existiert.
    Die Seite wird automatisch erstellt und auf dem Server gespeichert (als .html oder php). Diese muss dann bei Neuaufruf nicht generiert werden und vom Server geladen werden.

    Ich weiß, dass ich mit HTACCESS arbeiten muss, aber irgendwie stehe ich voll auf dem Schlauch und komme nicht weiter. Könntet Ihr mir bitte helfen?

  • #2
    Du kannst mit ErrorDocument 404 auf eine Seite weiterleiten, wenn eine falsch URL aufgerufen wurde. Allerdings hast du imho keine Chance, diese URL herauszufinden.

    Peter
    Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
    Meine Seite

    Kommentar


    • #3
      Zitat von Kropff Beitrag anzeigen
      Allerdings hast du imho keine Chance, diese URL herauszufinden.
      Doch, natürlich - die findet sich in $_SERVER.

      Edit:
      Ab Apache 2.2.16 kann man da auch die Direktive FallbackResource für nutzen.
      Zuletzt geändert von wahsaga; 13.11.2011, 17:50.
      I don't believe in rebirth. Actually, I never did in my whole lives.

      Kommentar


      • #4
        Zitat von wahsaga Beitrag anzeigen
        Doch, natürlich - die findet sich in $_SERVER
        Bei mir nicht.

        Peter
        Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
        Meine Seite

        Kommentar


        • #5
          Das Problem ist im Grunde trivial....
          (Siehe weiter unten)


          Aber ein paar Problemchen/Bedenken möchten abgehandelt werden:
          Wie ist das mit den Unterverzeichnissen? Irgendwann kommt das auch noch dazu.
          Den User bestimmen lassen, welche Dateien existieren? Mich gruselt!
          Was gibts denn gegen die automatische Seitengenerierung einzuwenden?
          Sollte man das Cachen nicht Proxy und Browser überlassen?


          Primitives Beispiel: (keinerlei Sicherheitsprüfung)
          .htaccess
          Code:
          RewriteEngine on
          RewriteCond %{REQUEST_FILENAME}                 !-f
          RewriteRule ^.*$                         index.php [QSA,L]
          index.php
          PHP-Code:
          <?php
          error_reporting
          (-1);
          ini_set('display_errors'TRUE);
           
          if(!empty(
          $_SERVER["REDIRECT_URL"]))
          {
            
          $filename basename($_SERVER["REDIRECT_URL"]);
            
          $content  $_SERVER["REDIRECT_URL"];
            
          file_put_contents($filename,$content);
            
          header("Location: $filename");
            exit;

           
          ?>
          <pre>
          <?php
            var_dump
          ($_SERVER);
          ?>
          </pre>
          Wir werden alle sterben

          Kommentar


          • #6
            Zitat von Kropff Beitrag anzeigen
            Bei mir nicht.
            Dann machst du wohl was falsch™

            (Wenn du tatsächlich eine Weiterleitung machst, also HTTP Redirect – dann geht die ursprüngliche Adresse natürlich „verloren“, weil der Client ja einen komplett neuen Request für diese macht.)
            I don't believe in rebirth. Actually, I never did in my whole lives.

            Kommentar


            • #7
              Zitat von wahsaga Beitrag anzeigen
              Dann machst du wohl was falsch™

              (Wenn du tatsächlich eine Weiterleitung machst, also HTTP Redirect – dann geht die ursprüngliche Adresse natürlich „verloren“, weil der Client ja einen komplett neuen Request für diese macht.)
              Ganz normal per .htaccess und ErrorDocument 404. Ich dachte der TS wollte darauf hinaus.

              Peter
              Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
              Meine Seite

              Kommentar


              • #8
                Zitat von Kropff Beitrag anzeigen
                Ganz normal per .htaccess und ErrorDocument 404.
                Ja, klar – aber das ErrorDocument als vollständigen URL angeben (dann findet nämlich eine Redirect-Weiterleitung darauf statt), oder nur als relativen Pfad …?
                I don't believe in rebirth. Actually, I never did in my whole lives.

                Kommentar


                • #9
                  Zitat von wahsaga Beitrag anzeigen
                  Ja, klar – aber das ErrorDocument als vollständigen URL angeben (dann findet nämlich eine Redirect-Weiterleitung darauf statt), oder nur als relativen Pfad …?
                  Komplette URL, relativ ging nicht wegen der Struktur.

                  Peter
                  Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
                  Meine Seite

                  Kommentar


                  • #10
                    Dann ist wie gesagt klar, dass du die Adresse des ursprünglich angeforderten Dokumentes nicht mehr in $_SERVER findest – weil du den Client bereits gezwungen hast, ein neues anzufordern. (Hoffentlich hast du in dem dann wengistens dran gedacht, den Statuscode 404 auszugeben? Sonst wird diese Anfrage nämlich mit dem Standard 200 OK beantwortet …)

                    Im Normalfall, wenn man’s vernünftig macht, findet man den Wert aber in $_SERVER.
                    I don't believe in rebirth. Actually, I never did in my whole lives.

                    Kommentar


                    • #11
                      Zitat von combie Beitrag anzeigen
                      Das Problem ist im Grunde trivial....
                      (Siehe weiter unten)


                      Aber ein paar Problemchen/Bedenken möchten abgehandelt werden:
                      Wie ist das mit den Unterverzeichnissen? Irgendwann kommt das auch noch dazu.
                      Den User bestimmen lassen, welche Dateien existieren? Mich gruselt!
                      Was gibts denn gegen die automatische Seitengenerierung einzuwenden?
                      Sollte man das Cachen nicht Proxy und Browser überlassen?


                      Primitives Beispiel: (keinerlei Sicherheitsprüfung)
                      .htaccess
                      Code:
                      RewriteEngine on
                      RewriteCond %{REQUEST_FILENAME}                 !-f
                      RewriteRule ^.*$                         index.php [QSA,L]
                      index.php
                      PHP-Code:
                      <?php
                      error_reporting
                      (-1);
                      ini_set('display_errors'TRUE);
                       
                      if(!empty(
                      $_SERVER["REDIRECT_URL"]))
                      {
                        
                      $filename basename($_SERVER["REDIRECT_URL"]);
                        
                      $content  $_SERVER["REDIRECT_URL"];
                        
                      file_put_contents($filename,$content);
                        
                      header("Location: $filename");
                        exit;

                       
                      ?>
                      <pre>
                      <?php
                        var_dump
                      ($_SERVER);
                      ?>
                      </pre>
                      Das klingt schon mal gut. Ich werde es die Tag mal testen.

                      Meine Idee die Funktion umzusetzte war so:

                      Per .htaccess öffene ich die index.php (In der sind alle Funktion zur Erstellung von Seiten, Ordner,... implementiert). Ich frage im Server Header welche Seite in welchem Verzeichnis aufgerufen werden soll. Lasse diese Seite und das Verzeichnis erstellen und speichere alles ab.

                      Das müsste doch eigentlich möglich sein oder?

                      Wichtig wäre mir, dass der im Server Header nicht der Status 404 einer Seite ausgegeben wird.

                      Kommentar


                      • #12
                        Das müsste doch eigentlich möglich sein oder?
                        Ja, aber die Sinnfrage bleibt weiterhin offen....

                        Für mein Gefühl, hast du dich auf einem Irrweg fest gebissen.
                        Wir werden alle sterben

                        Kommentar


                        • #13
                          Hallo,

                          um die Sinnfrage mal aufzugreifen: Was hast du denn genau vor? Was sollen diese automatisch erstellten Seiten denn für Inhalte enthalten? Wenn du uns erzählst, was du vor hast, könnten wir auch sinnvolle Alternativen vorschlagen.

                          Gruß,

                          Amica
                          [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
                          Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
                          Super, danke!
                          [/COLOR]

                          Kommentar


                          • #14
                            Google testet übrigens, ob auf alles und jenes mit einem Status 200 geantwortet wird. Wenn du dir SEO-technisch nicht ins Bein schießen willst, dann lass das lieber.
                            Ihr habt ein Torturial durchgearbeitet, das auf den mysql_-Funktionen aufbaut?
                            Schön - etwas Geschichte kann ja nicht schaden.
                            Aber jetzt seht euch bitte php.net/pdo oder php.net/mysqli bevor ihr beginnt!

                            Kommentar


                            • #15
                              Man kann prima eine Datenbank mit Suchbegriffen nehmen und diese, zum Beispiel auch untereinander verknüpft, als Basis für "erlaubte Seitennamen zur Generierung" nehmen (z.B.Keywords: lastminute, reisen, urlaub ergibt z.B. folgende gültige Dateinamen lastminute-reisen.html, lastminute-urlaub-reisen.html, urlaub.html oder reisen-lastminute.html, usw...).

                              Google prüft ob eine Seite mit einem zufälligen Dateinamen existiert z.B.

                              sdfkughobfsdfoihewohdflsjhgfkew.html

                              Und wenn ja, dann haben sie dich erwischt ;-)

                              Warum sollte man die Finger von allem lassen? Weil Mama sagt man solls nicht tun?

                              Kommentar

                              Lädt...
                              X