Mod Rewrite URL Weitergeben

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

  • Mod Rewrite URL Weitergeben

    Hallo,

    ich hoffe, dass der Beitrag hier richtig ist?

    Ich habe mich in der letzten Zeit mit Mod Rewrite befasst, um meine URLs zu optimieren.

    Ich habe die URL
    HTML-Code:
    http://www.wmkarten.eu/geo/kontinent.php?kontinent=Afrika&kontinentid=1
    in die URL
    HTML-Code:
    http://www.wmkarten.eu/kontinent/Afrika/1.html
    umgewandelt.

    Ich habe in der .htaccess folgende Regel dazu eingegeben:

    RewriteRule ^kontinent/([^/]*)/([^/]*)\.html$ /geo/kontinent.php?kontinent=$1&kontinentid=$2 [L]

    Ich bin jetzt allerdings davon ausgegangen, dass durch diese Regel ein Aufrufen eines Kontinents über mein Menü z.B. Afrika, Asien, Europa etc dazu führt, dass ich zur entsprechenden Seite mit den jeweiligen Daten gelange.
    Wenn ich die Menü-Punkte auswähle, komme ich zwar auf die Seiten, die URL wird jedoch weiter im alten Format
    HTML-Code:
    http://www.wmkarten.eu/geo/kontinent.php?kontinent=Afrika&kontinentid=1
    angezeigt.


    Die URL hätte doch jetzt so aussehen müssen, oder? Jedenfalls ist es das was ich bezwecken wollte.


    [/HTML] in die URL
    HTML-Code:
    http://www.wmkarten.eu/kontinent/Afrika/1.html
    Was habe ich falsch gemacht.

    Gruß,
    Norbert

  • #2
    Zitat von Nordlicht123 Beitrag anzeigen
    Was habe ich falsch gemacht.
    Du hast das Grundprinzip nicht verstanden.

    mod_rewrite „übersetzt“ Anfragen, die den Server erreichen.

    Wer stellt aber diese Anfragen? Der Client.
    Wenn du willst, dass dein Browser http://www.wmkarten.eu/kontinent/Afrika/1.html anfordert - dann musst du ihm auch sagen, dass er das tun soll.
    I don't believe in rebirth. Actually, I never did in my whole lives.

    Kommentar


    • #3
      Zitat von wahsaga Beitrag anzeigen
      Du hast das Grundprinzip nicht verstanden.

      mod_rewrite „übersetzt“ Anfragen, die den Server erreichen.

      Wer stellt aber diese Anfragen? Der Client.
      Wenn du willst, dass dein Browser http://www.wmkarten.eu/kontinent/Afrika/1.html anfordert - dann musst du ihm auch sagen, dass er das tun soll.
      Hallo,
      habe mir schon gedacht, dass das wohl so ist.
      Aber wie veränder ich jetzt das Aussehen der URL?
      Muss ich da mit "Request Uri" arbeiten?

      So sieht z.B. ei Code aus, mit dem ich die Parameter an die nächste Seite übergebe.

      PHP-Code:
                
                echo 
      '<li><p><a class=blt href="'.$row2->geomenu_link.'?kontinent='.$row->geomenu_name.'&kontinentid='.$row->kontinent_index.'&land='.$row2->geomenu_name.'&landid='.$row2->land_index.'">'.$row2->geomenu_name.'</a></p></li>' 
      Wie kann ich das jetzt umbauen, damit die URL so aussieht
      http://www.wmkarten.eu/kontinent/Afrika/1.html

      Gruß,
      Norbert

      Kommentar


      • #4
        Aber wie veränder ich jetzt das Aussehen der URL?
        In dem du deine Links auf diese Resource entsprechend anpasst.

        So sieht z.B. ei Code aus, mit dem ich die Parameter an die nächste Seite übergebe.
        PHP-Code:
        echo '<li><p><a class=blt href="'.$row2->geomenu_link.'?kontinent='.$row->geomenu_name.
          
        '&kontinentid='.$row->kontinent_index.'&land='.$row2->geomenu_name.
          
        '&landid='.$row2->land_index.'">'.$row2->geomenu_name.'</a></p></li>'
        Wie kann ich das jetzt umbauen, damit die URL so aussieht
        http://www.wmkarten.eu/kontinent/Afrika/1.html
        Du hast es ja noch nichtmals versucht! Dann erwarte auch nicht, dass wir deine Arbeit machen. Es sollte nun wirklich ein leichtes sein, den String (mehr ist es nicht!) anzupassen.
        Zuletzt geändert von TobiaZ; 17.04.2010, 23:00. Grund: PHP-Tag geschlossen.

        Kommentar


        • #5
          Zitat von TobiaZ Beitrag anzeigen
          In dem du deine Links auf diese Resource entsprechend anpasst.



          Du hast es ja noch nichtmals versucht! Dann erwarte auch nicht, dass wir deine Arbeit machen. Es sollte nun wirklich ein leichtes sein, den String (mehr ist es nicht!) anzupassen.
          Wie soll ich das verstehen, den Link auf diese Resource anpassen.
          Ohne ? und & kann ich doch die Variablen nicht an die nächste Seite übergeben.
          Ich möchte Sie aber dennoch übergeben aber nur nicht mehr anzeigen.

          Gruß

          Kommentar


          • #6
            Zitat von Nordlicht123 Beitrag anzeigen
            Ohne ? und & kann ich doch die Variablen nicht an die nächste Seite übergeben.
            *seufz*

            Du rufst nicht mehr index.php?parameter1=blah&parameter2=blubb auf, sondern /blah/blubb
            mod_rewrite „übersetzt“ diesen Request dann in einen mit Parametern, so dass du in deinem Script wie gewohnt über $_GET darauf zugreifen kannst.

            Das ist das komplette dahinterliegende Prinzip - wenn du das nicht langsam mal begreifst, dann lass' es lieber damit erst mal.
            I don't believe in rebirth. Actually, I never did in my whole lives.

            Kommentar


            • #7
              Geht es dir darum, dass die entsprechenden hrefs auf deiner Seite noch nicht so wie gewünscht aussehen? Dazu musst das Script (ich vermute ja mal, dass es sich da nicht um manuelle Seiten handelt) dass die Links ausgibt eben auch entpsrechend anpassen - wird ja nicht so schwer sein.
              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


              • #8
                Zitat von Quetschi Beitrag anzeigen
                Geht es dir darum, dass die entsprechenden hrefs auf deiner Seite noch nicht so wie gewünscht aussehen? Dazu musst das Script (ich vermute ja mal, dass es sich da nicht um manuelle Seiten handelt) dass die Links ausgibt eben auch entpsrechend anpassen - wird ja nicht so schwer sein.
                Hallo Quetschi,

                tja, für Euch scheint das alles sehr offensichtlich zu sein.
                Ich komme allerdings im Moment nicht so recht weiter.

                Mein Problem ist, dass die URL wie folgt angezeigt wird:

                HTML-Code:
                http://www.wmkarten.eu/geo/kontinent.php?kontinent=Afrika&kontinentid=1
                Ich hätte aber gerne "sauberen" Code. Der dann so aussieht:

                HTML-Code:
                http://www.wmkarten.eu/kontinent/Afrika/1.html
                Ich habe insgesamt 5 PHP Seiten erstellt, auf denen ich unterschiedliches darstelle.


                1.index.php
                2.kontinent.php
                3.land.php
                4.stadt.php
                5.sport.php

                Wenn jetzt jemand im Menü z.B. Afrika auswählt über gebe ich den Link mit allen Parametern an die Seite Kontinent.php.

                PHP-Code:
                echo '<li><a href="'.$row3->geomenu_link.'?kontinent='.$row->geomenu_name.'&kontinentid='.$row->kontinent_index.'&land='.$row2->geomenu_name.'&landid='.$row2->land_index.'&stadt='.$row3->geomenu_name.'&stadtid='.$row3->stadt_index.'">'.$row3->geomenu_name.'</a></li>'

                Dort werden diese dann von folgenden Parametern "übernommen".

                <?php $thisPage=$_GET["kontinent"]; ?>
                <?php $pk_iD=$_GET["kontinentid"]; ?>
                <?php $pl_iD=$_GET["landid"]; ?>
                <?php $p_iD=$_GET["stadtid"]; ?>

                All diese Paramter sind zwingend für die Seite, damit ich dort weitere Daten anzeigen kann, die dann meinetwegen nur zu Afrika oder Deutschland etc gehören.
                Was muss ich machen, damit ich den Code "sauber" darstellen und die Parameter trotzdem übergeben kann?

                Wenn du sagst, ich muss das Script, dass den Code ausgibt anpassen, dann vermute ich, dass dies auf den Seiten index.php, kontinent.php, land.php, etc erfolgen muss?

                Wenn ja, was füge ich da ein?

                Gruß

                Kommentar


                • #9
                  Du musst die eben gepostete (überlange!) Code-Zeile eben so anpassen, dass die Url wie von dir gewünscht aussieht - sehr viel genauer kann man es kaum noch beschreiben
                  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


                  • #10
                    Zitat von Quetschi Beitrag anzeigen
                    Du musst die eben gepostete (überlange!) Code-Zeile eben so anpassen, dass die Url wie von dir gewünscht aussieht - sehr viel genauer kann man es kaum noch beschreiben
                    Hallo,
                    danke, dass habe ich vor kurzem schon gemacht. Dann fehlen mir jedoch die Variablen auf der nächsten Seite und dadurch erscheinen nicht mehr die Richtigen Daten in den Tabellen der nächsten Seite.



                    PHP-Code:
                             
                              echo 
                    '<li><p><a class=blt href="'.$row2->geomenu_link.'/'.$row->geomenu_name.'/'.$row->kontinent_index.'/'.$row2->geomenu_name.'/'.$row2->land_index.'">'.$row2->geomenu_name.'</a></p></li>'

                    Wenn dass der richtige Weg ist, wie muss ich dann im Seitenscript vorgehen, damit die Variablen wieder aus der URL ausgelesen werden?

                    Das folgende funktioniert jetzt jedenfalls nicht mehr.

                    PHP-Code:
                    <?php $thisPage=$_GET["kontinent"]; ?>
                    <?php $pk_iD
                    =$_GET["kontinentid"]; ?>
                    <?php $pl_iD
                    =$_GET["landid"]; ?>
                    <?php $p_iD
                    =$_GET["stadtid"]; ?>
                    Gruß

                    Kommentar


                    • #11
                      Dann macht dein URL-Rewriting was falsch.

                      Hier nochmal der "Dienstweg":
                      1. "Schöne" URL verlinken, z. B. <a href="/produkte/festplatten/bluemedia-d-300/">...</a>
                      2. Brower ruft URL auf
                      3. Mod_Rewrite wandelt sie um in z. B. /products.php?cat=hdd&name=bluemedia-d-300
                      4. PHP-Skript ruft die GET-Parameter ab (cat und name)


                      Bei dir läuft dann also was in Punkt 3 falsch, es sei denn, es gibt noch einen anderen grundlegenden Verständnisfehler.

                      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


                      • #12
                        Zitat von AmicaNoctis Beitrag anzeigen
                        Dann macht dein URL-Rewriting was falsch.

                        Hier nochmal der "Dienstweg":
                        1. "Schöne" URL verlinken, z. B. <a href="/produkte/festplatten/bluemedia-d-300/">...</a>
                        2. Brower ruft URL auf
                        3. Mod_Rewrite wandelt sie um in z. B. /products.php?cat=hdd&name=bluemedia-d-300
                        4. PHP-Skript ruft die GET-Parameter ab (cat und name)
                        Bei dir läuft dann also was in Punkt 3 falsch, es sei denn, es gibt noch einen anderen grundlegenden Verständnisfehler.

                        Gruß,

                        Amica

                        Hallo,
                        ich habe jetzt nochmals den ganzen Tag rumprobiert, aber ich komme einfach nicht weiter.

                        Ich würde mich freuen, wenn hier jemand abschließend helfend eingreifen kann.

                        Den Link habe ich jetzt mal richtig verkürzt, damit das einfacher nachzuvollziehen ist.

                        Ich möchte jetzt nur die Variable des Kontinent-Name an die Seite kontinent.php ($row->geomenu_link) übergeben:

                        Fall 1: (durch die Einbindung von '[FONT=Courier New][COLOR=#cc0000]?kontinent' im folgenden link wird die Variable auch an die nächste Seite übergeben)[/COLOR][/FONT]

                        PHP-Code:
                        echo '<li><a href="'.$row->geomenu_link.'?kontinent='.$row->geomenu_name.'">'.$row->geomenu_name.'</a></li>' 
                        Der Link würde dann z.B. bei der Auswahl von Afrika so aussehen:

                        HTML-Code:
                        http://www.wmkarten.eu/geo/kontinent.php?kontinent=Afrika
                        Ich kann mir die Variable dann auf der Seite kontinent.php wie folgt aus der URL abholen:

                        PHP-Code:
                        <?php $thisPage=$_GET["kontinent"]; ?>
                        Da ich aber das "?" und "kontinent" nicht im Link haben möchte gehe ich wie folgt vor:

                        Fall 2: (ich ersetzte im folgenden Link "[FONT=Courier New][COLOR=#cc0000]?kontinent" durch '/')[/COLOR][/FONT]

                        PHP-Code:
                        echo '<li><a href="'.$row->geomenu_link.'/'.$row->geomenu_name.'">'.$row->geomenu_name.'</a></li>' 
                        Jetzt ist der Link zwar um das ? bereinigt, aber jetzt ist es leider nicht mehr möglich, mit der Abfrage
                        PHP-Code:
                        <?php $thisPage=$_GET["kontinent"]; ?>
                        die Variable abzurufen?


                        Wäre es möglich mir die zwei Zeilen für die .htaccess zu schreiben, so dass ich auf diesem Grundbaustein aufbauen kann.
                        Ich habe ettliches versucht, auch aus diesen zahlreichen Beispielen:

                        Tipps und Tricks mit mod_rewrite - praktische Beispiele - Suchmaschinenoptimierung Österreich suchmaschinentricks.at

                        Bin leider nicht klar gekommen.

                        Muss ich eventuell auch auf der Seite kontinent php in der die Variable abgeholt werden soll und auf der die Ausgabe der Daten erfolgt etwas anpassen?

                        Danke und Gruß

                        Kommentar


                        • #13
                          1. Wie sieht denn deine .htaccess aus und wo liegt sie?
                          2. Wird mod_rewrite von deinem Server überhaupt unterstützt?
                          3. Bitte brich den Code um!
                          Zuletzt geändert von AmicaNoctis; 25.04.2010, 19:34.
                          [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
                            Zitat von AmicaNoctis Beitrag anzeigen
                            1. Wie sieht denn deine .htaccess aus und wo liegt sie?
                            2. Wird mod_rewrite von deinem Server überhaupt unterstützt?
                            3. Bitte brich den Code um!
                            Hallo,
                            1. Die Datei liegt im Hauptverzeichnis da wo auch die index.php liegt
                            Im Moment habe ich nur einige Domain-Weiterleitungen drin.
                            Als ich mit mod_rewrite experimentiert habe, hatte ich die sogar rausgenommen, um auszuschließen, dass darin ein Fehler liegt. Im Moment habe ich keine Rule bezüglich mod_rewrite in der Datei, da bei allem was ich versucht habe nur Mist raus kam.
                            2. ja
                            3. jetzt nochmals umgebrochen.


                            Den Link habe ich jetzt mal richtig verkürzt,
                            damit das einfacher nachzuvollziehen ist.

                            Ich möchte jetzt nur die Variable des
                            Kontinent-Name an die Seite kontinent.php ($row->geomenu_link) übergeben:

                            Fall 1: (durch die Einbindung von '[FONT=Courier New][COLOR=#cc0000]?kontinent' [/COLOR][/FONT]
                            [FONT=Courier New][COLOR=#cc0000]im folgenden link wird die Variable auch an die nächste Seite übergeben)[/COLOR][/FONT]
                            PHP-Code:
                            echo '<li>
                            <a href="'
                            .$row->geomenu_link.'
                            ?kontinent='
                            .$row->geomenu_name.'">
                            '
                            .$row->geomenu_name.'</a></li>' 
                            Der Link würde dann z.B. bei der Auswahl von Afrika so aussehen:

                            [HTML][http://www.wmkarten.eu/geo/kontinent.php?kontinent=Afrika/HTML]

                            Ich kann mir die Variable dann auf der Seite kontinent.php wie folgt aus der URL abholen:

                            PHP-Code:
                            <?php $thisPage=$_GET["kontinent"]; ?>
                            Da ich aber das "?" und "kontinent" nicht im Link haben möchte gehe ich wie folgt vor:

                            Fall 2: (ich ersetzte im folgenden Link "[FONT=Courier New][COLOR=#cc0000]?kontinent" durch '/')[/COLOR][/FONT]

                            PHP-Code:
                            echo '<li><a href="'.$row->geomenu_link.'
                            /'
                            .$row->geomenu_name.'">
                            '
                            .$row->geomenu_name.'</a></li>' 
                            Jetzt ist der Link zwar um das "?" und "kontinent" bereinigt, aber jetzt ist es leider nicht mehr möglich, mit der Abfrage

                            PHP-Code:
                            <?php $thisPage=$_GET["kontinent"]; ?>
                            die Variable abzurufen?


                            Wäre es möglich mir die zwei Zeilen für die .htaccess zu schreiben, so dass ich auf diesem Grundbaustein aufbauen kann.
                            Ich habe ettliches versucht, auch aus diesen zahlreichen Beispielen:

                            [COLOR=#04558c]Tipps und Tricks mit mod_rewrite - praktische Beispiele - Suchmaschinenoptimierung Österreich suchmaschinentricks.at[/COLOR]

                            Bin leider nicht klar gekommen.

                            Muss ich eventuell auch auf der Seite kontinent php in der die Variable abgeholt werden soll und auf der die Ausgabe der Daten erfolgt etwas anpassen?

                            Danke und Gruß

                            Kommentar


                            • #15
                              Mit Code umbrechen meinte ich nicht, dass du alles nochmal posten sollst und den sowieso kurzen Code umbrichst, sondern diejenigen, die schon seit längerem stören. (Klick einfach auf die rote Meldung in meiner Signatur.)

                              Du machst jetzt folgendes: Du schreibst jetzt eine .htaccess und postest die dann. Davon ausgehend sehen wir weiter, wie man dir helfen kann.
                              [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

                              Lädt...
                              X