Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] RewriteRule killt die POST Variablen

Einklappen

Neue Werbung 2019

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

  • [Erledigt] RewriteRule killt die POST Variablen

    Hallo Zusammen,

    hab folgendes Problem, für das ich schon seit mehreren Wochen nach einer Lösung suche:

    Ich leite in meiner htaccess Datei alle Anfragen auf die index Datei um,
    wobei ich den Seitennamen als Parameter übergebe:

    Code:
    RewriteEngine on
    RewriteRule !index\.php - [C]
    RewriteRule ^(.*)\.php$ http://www.domain.com/index.php?page=$1 [L,QSA]
    
    RewriteRule !index\.php - [C]
    RewriteRule ^(.*)\.php?(.*)$ http://www.domain.com/index.php?page=$1&$2 [L,QSA]
    Mit dieser Umleitung kommt keine POST Variable in meinem Skript an.

    Wenn ich statt dessen für jede Seite eine Datei folgender Art anlege, kommen die POST Variablen im Skript an.

    Z.B seite_x.php
    PHP-Code:
    <?php
    $_POST
    ['page']='seite_x';
    require_once(
    "index.php");
    ?>

    Auf die Dauer ist das zweite Verfahren mühsam.

    Gibt es irgendwelche Ideen, was ich ändern kann ?
    (Ich habe keinen direkten Zugriff auf die http.conf)
    Webstammtisch Oldenburg


  • #2
    Wieso auch POST? URL-Parameter kommen als GET an. Wenn Du das nicht meintest, war das Beispiel mit ausgerechnet "page" sehr unglücklich gewählt.
    --

    „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
    Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“


    --

    Kommentar


    • #3
      Ich möchte beide

      Zitat von nikosch Beitrag anzeigen
      Wieso auch POST? URL-Parameter kommen als GET an. Wenn Du das nicht meintest, war das Beispiel mit ausgerechnet "page" sehr unglücklich gewählt.
      Na ja, ich bekomme den Seitennamen und andere Parameter mit GET,
      möchte aber auch Formulare auswerten, die ich mit POST übergebe.

      Auf meinem Localhost funktioniert das einwandfrei,
      aber bei meinen Seiten bei zwei unterschiedlichen Webhostern halt nicht.
      Webstammtisch Oldenburg

      Kommentar


      • #4
        Das beantwortet aber nicht die Frage. mod rewrite erzeugt immer GET bei seinen Operationen. Bestehende POST-Daten werden aber durchgereicht. Vielleicht wird page bei Dir ja "überschrieben".. Deine Frage ist einfach zu unspezifisch.
        --

        „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
        Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“


        --

        Kommentar


        • #5
          Zitat von nikosch Beitrag anzeigen
          Wieso auch POST? URL-Parameter kommen als GET an. Wenn Du das nicht meintest, war das Beispiel mit ausgerechnet "page" sehr unglücklich gewählt.
          Du hast Recht, das Ganze funktioniert auch so, und ist so natürlich auch besser zu verstehen.

          PHP-Code:
          <?php
          $_GET
          ['page']='seite_x';
          require_once(
          "index.php");
          ?>
          Also die GET-Parameter kommen mit der Rewrite-Rule alle an, nur die POST-Parameter aus den Formularen nicht.

          Dieses Verhalten ist unterschiedlich auf meinem
          Localhost(wo es funktioniert):
          Code:
          Apache Version 	Apache/2.2.11 (Win32) PHP/5.3.0
          Und bei ALL-Inkl und 1und1
          (wo es nicht funktioniert)

          Code:
          PHP Version 5.2.12-nmm1
          Server API 	Apache 2.0 Handler
          Webstammtisch Oldenburg

          Kommentar


          • #6
            Zitat von nikosch Beitrag anzeigen
            Das beantwortet aber nicht die Frage. mod rewrite erzeugt immer GET bei seinen Operationen. Bestehende POST-Daten werden aber durchgereicht. Vielleicht wird page bei Dir ja "überschrieben".. Deine Frage ist einfach zu unspezifisch.
            Die bestehenden POST Daten werden gerade nicht durchgereicht.
            Ich hab das schon ausgiebig getestet und auch den Vergleich zu der
            funktionierenden Lösung ohne mod_rewrite.

            Es geht hier nicht um die Variable "page", die kommt richtig an, bei allen Möglichkeiten.

            Ich brauche einfach ein paar Überlegungen, wo ich ansetzen kann.
            Hab auch nichts vergleichbares in der Suche gefunden, und auch der Support von All-Inkl hatte keine Idee, was ich machen könnte.
            Webstammtisch Oldenburg

            Kommentar


            • #7
              und auch der Support von All-Inkl hatte keine Idee, was ich machen könnte.
              Das und auch die Tatsache, dass ich selbst 1&1 Domains betreue, und definitiv weiß, dass mod rewrite mit POST-Durchleitung funktioniert, bestätigt meine Aussage.
              --

              „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
              Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“


              --

              Kommentar


              • #8
                Zitat von nikosch Beitrag anzeigen
                Das und auch die Tatsache, dass ich selbst 1&1 Domains betreue, und definitiv weiß, dass mod rewrite mit POST-Durchleitung funktioniert, bestätigt meine Aussage.
                Bei mir funktioniert es nicht, danke.

                Vielleicht hat ja noch jemand anderes eine Idee.
                Ich lese die PG-Variablen in ein Array in meiner Webseitenklasse ein:

                PHP-Code:
                function checkAllGP(){
                        foreach((array)
                $_GET as $key => $value){
                            switch (
                $key){
                                case 
                'action':
                                case 
                'page':
                                case 
                'whitelist':
                                    
                $this->addIN($key,$value);
                                    break;
                                case 
                'ID':
                                    
                $this->addIN($key,(int)$value);
                                    break;
                                default:
                                    
                loggin('GET: '.$key.' Value:'.$value);
                                    break;
                            }
                        }
                        
                //loggin('POST');
                        
                foreach((array)$_POST as $key => $value){
                            
                //loggin($key);
                            
                $this->addIN($key,$value);
                        }

                Webstammtisch Oldenburg

                Kommentar


                • #9
                  Ich kann Dir nur raten, in Zeile 1 Deiner Indexdatei mal ein var_dump ($_POST); zu setzen.
                  --

                  „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
                  Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“


                  --

                  Kommentar


                  • #10
                    Zitat von nikosch Beitrag anzeigen
                    Ich kann Dir nur raten, in Zeile 1 Deiner Indexdatei mal ein var_dump ($_POST); zu setzen.
                    Danke, bestätigt nur mein Problem

                    Variante A:
                    htaccess:

                    Code:
                    RewriteEngine on
                    RewriteRule !index\.php - [C]
                    RewriteRule !konfiguration\.php - [C]
                    RewriteRule ^(.*)\.php$ http://www.domain.com/index.php?m=$1 [L,QSA]
                    konfiguration.php
                    PHP-Code:
                    <?php
                    $_GET
                    ['m']='konfiguration';
                    require_once(
                    "index.php");
                    ?>
                    Ausgabe var_dump($_POST)
                    Code:
                    array(33) { ["name"]=>  string(10) "Copycat II" ["maintitle"]=>  string(7) "Copycat" ["subtitle"]=>  string(49) "Pop- Rock- Top 40- Die Coverband für jeden Anlass" ["meta_title"]=>  string(21) "wbsVerwaltung Copycat" ["ta_meta_description"]=>  string(61) "Copycat: Pop- Rock- Top 40- Die Coverband für jeden Anlass" ["ta_meta_keywords"]=>  string(75) "Band,Cover,Show,Oldenburg,Niedersachsen,Bremen,Hude,Weser,Ems, " ["meta_author"]=>  string(7) "Copycat" ["select1"]=>array(0) { }
                    Variante B:
                    htaccess:

                    Code:
                    RewriteEngine on
                    RewriteRule !index\.php - [C]
                    #RewriteRule !konfiguration\.php - [C]
                    RewriteRule ^(.*)\.php$ http://www.domain.com/index.php?m=$1 [L,QSA]
                    Ausgabe var_dump($_POST)
                    Code:
                    array(0) { }

                    In der .htaccess hab ich noch die Version mit drin für die GET Parameter wie oben beschrieben.


                    Und jetzt ???
                    Webstammtisch Oldenburg

                    Kommentar


                    • #11
                      Achso, über http-Redirects machst Du natürlich einen komplett neuen Request. Du müsstest schon relative URLs verwenden.
                      --

                      „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
                      Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“


                      --

                      Kommentar


                      • #12
                        meine Vermutung wäre... dass die Parameter verloren gehen, da du auf extern umleitest ? Habe ich noch nie gemacht, ich leite wenn dann direkt auf "/index.php" um und da hatte ich nie Probleme mit soetwas.

                        Kommentar


                        • #13
                          Zitat von nikosch Beitrag anzeigen
                          Achso, über http-Redirects machst Du natürlich einen komplett neuen Request. Du müsstest schon relative URLs verwenden.
                          Danke !!!

                          So haut das hin, ich wäre auf die Idee nie von alleine gekommen, wenn man dann auch hört und liest, daß POST Variablen immer übergeben werden.

                          Mit welcher Variable kann ich bestimmen, daß http Rewrites möglich sind ?

                          Munter !
                          Webstammtisch Oldenburg

                          Kommentar


                          • #14
                            Mit welcher Variable kann ich bestimmen, daß http Rewrites möglich sind ?
                            Wie meinst Du das?
                            --

                            „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
                            Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“


                            --

                            Kommentar


                            • #15
                              Zitat von nikosch Beitrag anzeigen
                              Wie meinst Du das?
                              Na ja, es gibt immer noch das beschriebene Verhalten:

                              Wenn ich ein mod_rewrite auf eine absolute url mache, werden einmal POST Variablen übergeben (Z.B. Auf meinem Localhost) und bei ALL-Inkl und 1und1 nicht.

                              Das müßte eigentlich an einer Apache Zustandsvariablen liegen.

                              Aber welche ?
                              Webstammtisch Oldenburg

                              Kommentar

                              Lädt...
                              X