Jamal: Mod Rewrite, how to?

Hallo,

im Vorraus: Ja ich habe Google benutzt, Ja ich habe die Forumsuche benutzt.

Ich checks trotzdem nicht.

Beispiel:

mein link sieht bisher so aus:

<a href='index.php?s=whatever&x=nothingelse'>Link</a>

Wenn ich diese Url aufrufe steht in der Addresszeile folgende URL
http://localhost/index.php?s=whatever&x=nothingelse

es soll dort aber stehen:
http://localhost/whatever/nothingelse

und wenn ich so eine url habe:
http://localhost/index.php?s=whateveryouwant
soll

http://localhost/whateveryouwant
dort stehen.

Also soll immer "s=",  "x=" usw weggelassen und durch ein "/" ersetzt werden

Muss ich im Quelltext dann ändern? in die übershcriebene url oder bleibt die einfach so?
Also nach dem Ändern:
1.
<a href='index.php?s=whatever&x=nothingelse'>Link</a>

oder
2.

<a href='whatever/nothingelse'>Link</a>

Das soll es den suchmaschinen leichter machen meine Seiten zu indexieren.

Lg

Jamal

  1. Hi,

    mein link sieht bisher so aus:

    <a href='index.php?s=whatever&x=nothingelse'>Link</a>

    Wenn ich diese Url aufrufe steht in der Addresszeile folgende URL
    http://localhost/index.php?s=whatever&x=nothingelse

    es soll dort aber stehen:
    http://localhost/whatever/nothingelse

    und wenn ich so eine url habe:
    http://localhost/index.php?s=whateveryouwant
    soll

    http://localhost/whateveryouwant
    dort stehen.

    Dann musst du natuerlich auch genau darauf verlinken.

    Muss ich im Quelltext dann ändern?

    Ja natuerlich - wo denn sonst?

    Beim Googlen wirst du ja wohl bereits wenigstens herausgefunden haben, dass mod_rewrite *serverseitig* arbeitet. Dass es also nicht Linkziele veraendert im HTML-Code, den der Client bereits erhalten hat, ist also nur logisch.

    Also nach dem Ändern:
    1.
    <a href='index.php?s=whatever&x=nothingelse'>Link</a>

    oder
    2.

    <a href='whatever/nothingelse'>Link</a>

    Letzteres natuerlich.

    mod_rewrite brauchst du dann serverseitig, damit der Server diese angeforderte Adresse wieder in index.php?s=whatever&x=nothingelse o.ae. umschreiben kann - damit er diese Parameter an ein Script namens index.php weitergeben kann, welches sie dann auswerten kann.

    MfG ChrisB

  2. Hi Jamal,

    Muss ich im Quelltext dann ändern? in die übershcriebene url oder bleibt die einfach so?
    Also nach dem Ändern:
    1.
    <a href='index.php?s=whatever&x=nothingelse'>Link</a>

    oder
    2.

    <a href='whatever/nothingelse'>Link</a>

    Der Browser ruft die URL auf, die du ihm sagst.
    Sprich: Der Browser geht zu der URL, die im Quelltext steht.
    Sprich: Der Browser geht zu index.php?s=whatever&x=nothingelse und folglich steht das auch in der Adresszeile.

    Also musst du eine Links erst mal so in den Quelltext schreiben, wie der Browser sie aufrufen und du sie in der Adresszeile stehen haben möchtest:

    <a href="/whatever/nothingelse">Ein Link</a>

    Auf dem Server kannst du dann mittels RewriteRule definieren, wie der Apache die URL manipulieren soll, bevor er sie verarbeitet.

    ~~~apache RewriteEngine On
      RewriteRule ^([a-zA-Z0-9]+)/?([a-zA-Z0-9]+)?$ index.php?s=$1&x=$2

      
    So könnte das beispielsweise aussehen, $\_GET['s'] und $\_GET['x'] sind dann immer vorhanden, wobei letzteres dann eventuell leer sein kann.  
      
      
    Viele Grüße,  
      ~ Dennis.
    
    -- 
    Mein [SelfCode](http://community.de.selfhtml.org/fanprojekte/selfcode.htm): [ie:{ fl:( br:> va:) ls:\[ fo:) rl:( n4:# ss:) de:\] js:| ch:{ sh:| mo:} zu:|](http://www.peter.in-berlin.de/projekte/selfcode/?code=ie%3A%7B+fl%3A%28+br%3A%3E+va%3A%29+ls%3A%5B+fo%3A%29+rl%3A%28+n4%3A%23+ss%3A%29+de%3A%5D+js%3A%7C+ch%3A%7B+sh%3A%7C+mo%3A%7D+zu%3A%7C)
    
    1. Hallo!

      ~~~apache

      RewriteEngine On

      RewriteRule ^([a-zA-Z0-9]+)/?([a-zA-Z0-9]+)?$ index.php?s=$1&x=$2

      Vielen Dank!  
        
      Ich hab aber ein Problem.  
        
      Also das gnaze FUnktioniert so:  
        
      root/  
      index.php  
        
       Diese kriegt den Paramenter s mit einem Wert z.B. "Reg"  
        
      dann holt er sich den Parameter und includet die datei  
      root/contents/Reg.php  
        
      also so wie du das geschrieben hast klappt das also  
      <a href='whatever/nothingelse'>Link</a>  
        
      Wenn ich dann bei "nothingelse" bin, dann dann ist dort ein Link:  
      <a href='index.php?s=whatever&regAs=nothingelse'>Registrieren als K&auml;ufer</a>  
        
      Er ruft also den gleichen Link wie vorher nochmal auf nur diesmal mit Parameter, aber irgendwie geht er damit nicht richtig um!  
        
      Also dieser Link:  
      <a href='whatever/nothingelse/&regAs=kaeufer'>Registrieren als K&auml;ufer</a>  
        
      Muss so aussehen:  
      <a href='whatever/nothingelse/kaeufer'>Registrieren als K&auml;ufer</a>  
        
      Und mein Skript muss dieses "kaeufer" irgendwie auslesen können wie mach ich das?  
        
      weil wenn kaeufer nicht herrausgelesen werdne kann, dann erscheint das falsche ANmeldeformular.  
        
      Lg  
        
      Danke im Vorraus,  
        
      Jamal  
        
        
        
      
      
      1. Hallo,
        schon gut, es klappt.. =)

        Vielen Dank.

        Nun aber ne andere Frage..
        welch URL mögen Suchmaschinen lieber?
        1. <a href='/buysocial.de/registrieren/kaeufer'>Registrieren als K&auml;ufer</a>

        2.<a href='/buysocial.de/registrieren/kaeufer.html'>Registrieren als K&auml;ufer</a>

        3. <a href='http://domain.de/buysocial.de/registrieren/kaeufer'>Registrieren als K&auml;ufer</a>

        4. <a href='http://domain.de/buysocial.de/registrieren/kaeufer.html'>Registrieren als K&auml;ufer</a>

        Lg

        Dennis

        1. Hi,

          Nun aber ne andere Frage..
          welch URL mögen Suchmaschinen lieber?

          Darueber kann man viel spekulieren - eindeutige Aussagen zu treffen ist aber kaum moeglich, weil niemand ausserhalb die Geheimnisse der SuMas kennt.

          1. <a href='/buysocial.de/registrieren/kaeufer'>Registrieren als K&auml;ufer</a>

          2.<a href='/buysocial.de/registrieren/kaeufer.html'>Registrieren als K&auml;ufer</a>

          1. <a href='http://domain.de/buysocial.de/registrieren/kaeufer'>Registrieren als K&auml;ufer</a>

          2. <a href='http://domain.de/buysocial.de/registrieren/kaeufer.html'>Registrieren als K&auml;ufer</a>

          Alle vier klingen erst mal so, als ob sie fuer eine Suchmaschine relativ uninteressanten Inhalt haetten - denn die SuMa legt keinen Wert darauf, sich bei dir zu registrieren.
          Inhaltsseiten, bspw. die Artikelbeschreibungen in einem Shop - *das* waere fuer die Suchmaschine interessant.

          Bei deinen Beispiel-Links verstehe ich nicht so ganz, warum du da ein "Verzeichnis" namens buysocial.de drin hast - wenn das ganze spaeter mal unter der Domain laufen soll, dann braucht deren Name nicht mehr im Pfad drinstehen.

          Und andersherum, erst mal kaeufer - als der jenige, der hier eine Aktion ausfuehrt - und dann registrieren - die Aktion, die er auf der so addressierten Unterseite ausfuehrt, erschiene mir logischer.

          /kaeufer/registrieren

          MfG ChrisB

      2. Hallo,

        Und mein Skript muss dieses "kaeufer" irgendwie auslesen können wie mach ich das?

        Dennis hat dir das Grundprinzip erklärt. Nach dem gleichen Prinzip musst du bei einer dritten Variable vorgehen.

        Viele Grüße
        Thorsten