CB: mod rewrite

Hallo Forum,

RewriteEngine on
Options +FollowSymLinks
RewriteBase /

RewriteRule  ^/shop/product1/$  /pages/shop_overview.php?pid=1

Wenn ich www.meinedomain.de/shop/product1/ eingebe wird nicht auf die Seite
www.meinedomain.de/pages/shop_overview.php?pid=1 umgeleitet. Sopndern es erscheint:

Not Found

The requested URL /shop/product1/ was not found on this server.
Apache/2.0.52 (Win32) PHP/4.3.9 Server at meinedomain Port 80

Warum ?

  1. Huhu CB

    RewriteRule  ^/shop/product1/$  /pages/shop_overview.php?pid=1
    Warum ?

    probier es mal mit ohne führenden Schrägstrich, und der abschliessende
    sollte optional sein.

    Also so

    RewriteRule  ^shop/product1/?$  /pages/shop_overview.php?pid=1

    Viele Grüße

    lulu

    --
    bythewaythewebsuxgoofflineandenjoytheday
    1. RewriteRule  ^shop/product1/?$  /pages/shop_overview.php?pid=1

      Das ergebit die gleiche Fehlermeldung. "not found"

      :(

    2. Also das sind übrigens meine ersten Versuche mit mod rewrite.
      Diese .htaccess muss doch in das Wurzelverzeichnis oder ?

      1. Huhu CB

        Also das sind übrigens meine ersten Versuche mit mod rewrite.
        Diese .htaccess muss doch in das Wurzelverzeichnis oder ?

        Nicht zwangsläufig, aber in diesem Fall macht das Sinn.

        Wo probierst Du das denn aus, lokal oder bei einem Hoster?

        Dann arbeite mal die folgende Frageliste ab:

        Ist der Server überhaupt vom Stamme der Apachen?
        Und ist das Modul "mod rewrite" verfügbar?
        Gibt es die Zieldatei "/pages/shop_overview.php" ?

        Ansonsten habe ich im Moment keine weitere Idee, sollte eigentlich mit dem hier funktionieren:

        RewriteRule  ^shop/product1/?$  /pages/shop_overview.php?pid=1

        Viele Grüße

        lulu

        --
        bythewaythewebsuxgoofflineandenjoytheday
        1. Hallo,

          Wo probierst Du das denn aus, lokal oder bei einem Hoster?

          Lokal.

          Ist der Server überhaupt vom Stamme der Apachen?

          Apache 2.0.52

          Und ist das Modul "mod rewrite" verfügbar?

          Laut phpinfo():

          LOADED MODULES:
          core mod_win32 mpm_winnt http_core mod_so mod_access mod_actions mod_alias mod_asis mod_auth mod_autoindex mod_cgi mod_dir mod_env mod_imap mod_include mod_isapi mod_log_config mod_mime mod_negotiation mod_rewrite mod_setenvif mod_userdir sapi_apache2

          Gibt es die Zieldatei "/pages/shop_overview.php" ?

          Ja. Aber er sagt ja er könne /shop/product1 nicht finden.

  2. Hallo CB!

    Not Found

    The requested URL /shop/product1/ was not found on this server.
    Apache/2.0.52 (Win32) PHP/4.3.9 Server at meinedomain Port 80
    Warum ?

    Hast du auch deine http.conf entsprechend angepaßt?
    AllowOverride muss für das entsprechende Verzeichnis (DocumentRoot) auf den entsprechenden Wert gesetzt sein (weiß jetzt nicht genau welchen und bin zu faul nachzuschauen), du kannst ihn lokal aber ruhig auf All setzen, damit darf im .htaccess-File alles verändert werden!

    Ciao,
    Andy

    1. Oh mann!!

      Du bist der beste! Es klappt. Danke.

      Aber gleich noch eine Frage hinterher:

      RewriteEngine on
      #Options +FollowSymLinks
      RewriteBase /

      RewriteRule  ^shop/fruechte/?$  /pages/shop_overview.php?cat_id=1
      RewriteRule  ^shop/fruechte/banane/?$  /pages/shop_overview.php?cat_id=78

      Brauch man wirklich dann 1 Zeile pro Produktseite ?
      Oder wie regeln große Seiten das ? Nicht dass die .htaccess noch ein paar kilobyte gross wird.

      1. Nochmal hallo!

        RewriteRule  ^shop/fruechte/?$  /pages/shop_overview.php?cat_id=1
        RewriteRule  ^shop/fruechte/banane/?$  /pages/shop_overview.php?cat_id=78
        Brauch man wirklich dann 1 Zeile pro Produktseite ?

        Nicht wenn du deine shop_overview.php (Ach ja im anderen Posting muss es  dann natürlich /pages/shop_overview.php heißen) ein wenig umstrickst. Statt cat_id müsstest du halt sowas wie shop_overview.php?produkt=banane&cat=fruechte haben!
        Dann müsstest du noch mit regulären Ausdrücken beschäftigen und presto, du hast es!
        Sowas in der Richtung
        RewriteRule ^/shop/(.*)/(.*)/?$  /pages/shop_overview.php?produkt=$2&cat=$1

        Ist ungetestet, sollte aber gehen!

        Viel Spass noch!

        Ciao,
        Andy

    2. Na Prost, Mahlzeit!

      Jetzt komme ich zwar auf die richtige Datei: /pages/shop_overview.php
      aber alle Links auf der Seite sind nun umgewandelt in:

      http://..../shop/shop_overview.php?cat_id=34

      ,so dass die darauffolgenden Links und CSS nicht mehr funktionieren.

      ??? Nun bin ich verwirrt.

      1. Hallo CB!

        Jetzt komme ich zwar auf die richtige Datei: /pages/shop_overview.php
        aber alle Links auf der Seite sind nun umgewandelt in:
        http://..../shop/shop_overview.php?cat_id=34

        Wie meinen? Wenn du meinst, dass die Links in deiner shop_overview.php immer noch auf shop_overview.php verweisen, dann ist das insoweit korrekt. Du musst die Links manuell in der php-Datei (oder automatisiert ) ändern! Der Apache wandelt nichts an der HTML-Datei, die er ausliefern soll um!

        ,so dass die darauffolgenden Links und CSS nicht mehr funktionieren.

        Beim CSS ist es klar, deine Verzeichis-Struktur hat sich geändert! Es gilt immer die Hierarchie in der Adresszeile, die der Browser abfrägt! Schreib einfach als Bezug zu deiner CSS-Datei einen aboluten Pfad in der Form /pfad/zur/css.css, dann geht das!
        Das müsste auch der Grund für die nicht funktionieren Links sein, da du diese relativ angeben hast und nicht absolut, also auch /shop_overview.php bzw. gleich die umgeformte URI, statt shop_overview.php!

        Ciao,
        Andy