parameter übergabe mit mod_rewrite?

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

  • parameter übergabe mit mod_rewrite?

    Hallo ich Probiere gerade ein wenig mit modrewrite rum und haben folgendes problem.

    ich habe 2 Links die die Folgendermaßen umgeschrieben werden sollen
    Code:
    1. index.php?page=home   soll home.html  werden
    2  index.php?page=test&id=1 soll test.html werden
    
    aufgerufen werden die links dann mit
    <a href="home.html">Home</a>
    <a href="test.html">Test</a>
    Mit meiner jetzigen .htaccess funktioniert das mit dem ersten Link auch so wie es soll, nur bei der übergabe mehrerer Parameter komme ich iwrgendwie nicht weiter.

    Hier mal meine .htaccess datei
    Code:
    <IfModule mod_rewrite.c>
      RewriteEngine on
      RewriteBase /
      RewriteRule ^(.*)id(.*).html$ index.php?page=$1&id=$2 [L]
      RewriteRule ^(.*).html$ index.php?page=$1 [L]
    </IfModule>
    Schonmal besten Dank

    mfg
    mo

    So habe mir mal ein paar andere threads zu dem thema angeschaut und mal in der Apache doku gelesen und auch ein paar änderungen vorgenommen die aber weiterhin kein ergebniss liefern.

    Hier mal die neue .htaccess
    Code:
    <IfModule mod_rewrite.c>
      RewriteEngine on
      RewriteBase /
      RewriteRule ^test(.+).html$ index.php?page=$1 [QSA]
      RewriteRule ^(.+).html$ index.php?page=$1 [L]
    </IfModule>
    
    und hier der link dahin
    <a href="test.html?id=1">Test</a>
    Naja aber iwie bleibt das ergebniss gleich
    Zuletzt geändert von mo78; 05.10.2011, 13:08.

  • #2
    Hallo,

    test(.+).html matcht nicht auf test.html, denn du zwingst ihn dazu, dass zwischen dem Namen test und der Erweiterung html mindestens zwei beliebige Zeichen matchen muss. Das letzte davon wird sicher meistens der Punkt sein, aber da du ihn nicht maskiert hast, matcht es z. B. auch test1-html

    Warum nutzt du nicht einfach das Pattern „test\.html“? Das mit dem QSA-Flag hast du richtig gemacht.

    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


    • #3
      So habe endlich mal die Zeit gefunden mich mit mod_rewrite weiter zu beschäftigen aber iwie komme ich immer noch nicht zu den ergebniss was ich wünsche.

      Hier mal der aktuelle Stand der .htaccess
      Code:
       <IfModule mod_rewrite.c>
        RewriteEngine on
        RewriteBase /
        RewriteRule ^(.+)/(.+).html$ index.php?page=$1&id=$2 [QSA] 
      </IfModule>
      Und das ist der Link mit Parameter übergabe
      PHP-Code:
       <a href="edit.html?id=<?=$id?>">bearbeiten</a>
      page=edit funktioniert so auch aber der ID parameter wird nicht mit übergeben.

      Schonmal danke für jegliche hilfe

      mfg
      mo

      Kommentar


      • #4
        Das kann so nicht stimmen, wie du es sagst. Wenn du die edit.html aufrufst, kann die RewriteRule ^(.+)/(.+).html$ diese URL nur so matchen, dass der Unterausdruck „edit“ in $2 drin steht und in $1 der Pfad der edit.html.

        Deine index.php wird also mit page=pfad/zur/datei und id=edit aufgerufen. Du sagst aber, dass page=edit ist. Wenn das wirklich stimmt, hast du vermutlich noch eine andere .htaccess und deren Regeln werden angewendet.
        [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


        • #5
          Ahh habe vergessen noch eine andere rule auszuklammern

          RewriteRule ^(.+).html$ index.php?page=$1 [L]

          hab die anderen rausgenommen und es geht auch so. Also das er aus edit.html -> page=edit macht.

          Aber wie bekomme ich denn da noch parameter angehängt ???


          Habe mich mit diesen tutorial beschäftigt aber iwie hilft mir das nicht so weiter
          Tutorials - Allgemeines - .htaccess - mod_rewrite Teil 3

          Kommentar


          • #6
            Jetzt musst du noch das QSA-Flag dazupacken: [QSA,L]
            [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


            • #7
              So das funktioniert soweit jetzt auch

              Ist es denn auch möglich das jetzt statt
              Code:
              edit.html?id=1
              nur
              Code:
              edit.html
              im Browser zu sehen ist ?

              mfg
              mo
              Zuletzt geändert von mo78; 28.10.2011, 15:24.

              Kommentar


              • #8
                Nein, das ist nicht möglich. Du könntest aber den Link als edit-123.html schreiben und die RewriteRule so umbauen:

                RewriteRule (.+)-([0-9]+)\.html$ index.php?page=$1&id=$2 [L]
                [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


                • #9
                  Ja, indem du einfach nur edit.html in die Adresszeile des Browsers eingibst.

                  Kommentar


                  • #10
                    Mit scheint das etwas zu kompliziert gedacht.

                    Code:
                    RewriteEngine on
                    RewriteRule \.html$ index.php [QSA,L]
                    PHP-Code:
                    <?php
                     
                    //index.php
                    ?>
                    <pre>
                    <h1>Server</h1>
                    <?php
                     var_dump
                    ($_SERVER);
                    ?>
                    <h1>GET</h1>
                    <?php
                     var_dump
                    ($_GET);
                    ?>

                    </pre>
                    In ["REDIRECT_URL"], bzw. ["REQUEST_URI"] stecken alle benötigten Informationen für den FrontController.
                    Get+Post Parameter stellen kein Problem dar.
                    Zuletzt geändert von combie; 28.10.2011, 15:44.
                    Wir werden alle sterben

                    Kommentar


                    • #11
                      Ah ok

                      @combie
                      bei deinem Vorschlag funktioniert es leider garnicht mehr.

                      vielleicht kannst mir da ja ein wenig auf die sprünge helfen, wie ich die request_uri verwenden bzw mit einbauen kann.

                      mfg
                      mo
                      Zuletzt geändert von mo78; 30.10.2011, 20:23.

                      Kommentar

                      Lädt...
                      X