Henning: Mod Rewrite nicht für jede URL

Hallo,

ich möchte mod_rewrite verwenden und eine URL von
www.mein-domainname.de/var nach
www.mein-domainname.de/index.php?inhalt=var umschreiben.

Dafür möchte ich folgendes verwenden:
RewriteEngine On
RewriteBase /
RewriteRule ^.*$ index.php?inhalt=$1 [L,QSA]

Allerdings gibt es auch Links auf Bilder der
Form:
www.mein-domainname.de/pics/bildname.jpg (es handelt sich ausschließlich um JPEGs)

Wie kann ich diese URLs in der RewriteRule ausschließen?

Gruß,
Henning

  1. Hallo Henning,

    Wie kann ich diese URLs in der RewriteRule ausschließen?

    Füge vor die RewriteRule-Zeile eine Zeile

    RewriteCond %{REQUEST_URI}   !^/pics

    ein. Das heißt: Für alle REQUEST_URIs, die nicht mit /pics anfangen. Das !-Zeichen steht für "nicht". Danach kommt ein Regexp. Diese Zeile gilt immer für die nächste RewriteRule. Nähreres in der mod_rewrite-Doku.

    Viele Grüße,
    Christian

    1. Hallo und Danke,

      »»Nähreres in der mod_rewrite-Doku.
      Gibt es davon eigentlich eine deutsche Übersetzung?

      Gruß,
      Henning

      1. Hallo Henning,

        Gibt es davon eigentlich eine deutsche Übersetzung?

        Nein. Allerdings scheint da jemand hier nicht unbekanntes daran zu arbeiten: http://httpd.apache.org/docs-project/translations.html

        Ansonsten empfehle ich eine Archiv-Suche nach mod_rewrite, da gibt es tonnenweise gute Beiträge.

        Viele Grüße,
        Christian

    2. Hallo,

      ich stelle gerade fest das ich jedes mal einen 404 erhalte. Für PHP_SELF erhalte ich /index.php (korrekt)
      $_GET['inhalt'] ist aber index.php
      Wie ist das zu erklären? $1 müßte die Zeichenkette nach dem / sein, oder?

      Gruß,
      Henning

      1. Hallo Henning,

        Wie ist das zu erklären? $1 müßte die Zeichenkette nach dem / sein, oder?

        Jain. Du hast folgendes Problem: Du leitest per mod_rewrite _alles_ weiter. _Alles_. index.php wird also auch auf index.php?inhalt=index.php weitergeleitet. Der Apache merkt dann, dass er eine endlosschleife produzieren würde und bricht ab.

        Füge noch eine Zusätzliche RewriteCond-Zeile ein:

        RewriteCond %{REQUEST_URI}  !^/index.php

        dann sollte es klappen.

        Viele Grüße,
        Christian

        1. Hallo,

          Danke, funktioniert jetzt alles.

          Gruß,
          Henning