Phil: RewriteRule für zwei Variablen?

Hallo zusammen

Ich verwende schon seit längerem folgende RewriteRule:

RewriteRule ^([a-z]+)$ index.php?pid=$1

Folgenden Link möchte ich neu gerne umschreiben:

http://.....com/news/1

Daraus soll für den Server werden: index.php?pid=news&page=1

Danke für die Hilfe.

Grüsse, Phil

  1. Hallo,

    Folgenden Link möchte ich neu gerne umschreiben:

    http://.....com/news/1

    Daraus soll für den Server werden: index.php?pid=news&page=1

    was hast Du versucht?
    Woran bist Du hängen geblieben?
    Wie können wir Dir helfen?

    Freundliche Grüße

    Vinzenz

    1. Danke für die Antwort.

      Folgende Lösung habe ich schon:
      RewriteRule ^([a-z]+)$ index.php?pid=$1
      RewriteRule ^([0-9]+)$ index.php?pid=news&page=$1

      Die kombinierte Variante wäre allerdings schöner. Allerdings bin ich mir nich sicher, wie sich dies umsetzen lässt.

      Sämtliche Versuche beide Variablen miteinander auszulesen scheitern in unbrauchbaren Ergebnissen.

      1. Hi,

        Folgende Lösung habe ich schon:
        RewriteRule ^([a-z]+)$ index.php?pid=$1
        RewriteRule ^([0-9]+)$ index.php?pid=news&page=$1

        Die kombinierte Variante wäre allerdings schöner. Allerdings bin ich mir nich sicher, wie sich dies umsetzen lässt.

        Du willst erst ein paar Buchstaben, dann ein paar Ziffern - für beides hast du schon Suchmuster.
        Und dann willst du auch noch einen Slash dazwischen - das „Suchmuster“ für den, wenn er nicht optional sein und auch nicht in Form einer Backreference erfasst werden soll, ist reichlich trivial: /

        Sämtliche Versuche beide Variablen miteinander auszulesen scheitern in unbrauchbaren Ergebnissen.

        Versuche zeigen, nicht ominös davon faseln.
        Nur dann können wir dir sagen, wo dein Fehler liegt.

        MfG ChrisB

        --
        RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?
        1. Hallo zusammen
          Danke für die Hilfe.

          Ich hoffe ihr seid ein (wenigstens ein bisschen) stolz auf mich :-)

          RewriteEngine On
          RewriteCond %{REQUEST_FILENAME} !-f
          RewriteCond %{REQUEST_FILENAME} !-d
          RewriteCond %{REQUEST_URI} !index.php

          RewriteRule ^([a-z]+)$ /index.php?pid=$1
          RewriteRule ^([a-z]+)/([0-9])$ /index.php?pid=$1&bid=$2 [L]

          Das letzte kleine Problem das ich habe. Die zweite RewriteRule beinträchtigt auch die realtiven Links welche sicher innerhalb von index.php befinden. Leider nützt auch das nichts...

          RewriteCond %{REQUEST_URI} !..+$

          1. Hi!

            RewriteCond %{REQUEST_FILENAME} !-f
            RewriteCond %{REQUEST_FILENAME} !-d
            RewriteCond %{REQUEST_URI} !index.php
            RewriteRule ^([a-z]+)$ /index.php?pid=$1

            Die !-f-Direktive sorgt schon dafür, dass index.php ausgenommen wird, weil die als Datei vorliegt. Die dritte RewriteCond ist also überflüssig.

            RewriteRule ^([a-z]+)/([0-9])$ /index.php?pid=$1&bid=$2 [L]

            Diese RewriteRule hat keine RewriteConds, die existierende Dateien/Verzeichnisse ausnehmen würden. RewriteConds beziehen sich nur auf _eine_ nachfolgende RewriteRule.

            Das letzte kleine Problem das ich habe. Die zweite RewriteRule beinträchtigt auch die realtiven Links welche sicher innerhalb von index.php befinden. Leider nützt auch das nichts...

            "Beeinträchtigt" ist so aussagekräftig wie "funzt nicht". Wenn die hinzugefügten RewriteConds dein Problem nicht lösen, beobachte und beschreib es genauer.

            Lo!

            1. Herzlichen Dank für eure tolle Hilfe!

              ich dachte RewriteCond %{REQUEST_URI} !..+$ hat den Sinn, dass keine URLs umgeschrieben werden die einen Punkt darin enthalten.

              Irgendwie scheinen trotz den RewriteCond die relativen Links in meiner Datei umgewandelt zu werden. Folgndes hat mein Problem gelöst.

              <base href="http://*meine url*.com/">

              Auch der Tipp das die RewriteCond nur für die nächste Rule gilt, klappt leider nicht.

              Grüsse, Phil

              1. Hi,

                Irgendwie scheinen trotz den RewriteCond die relativen Links in meiner Datei umgewandelt zu werden.

                Klingt eher so, als hättest du nicht in Betracht gezogen, wessen Aufgabe es ist, relative Pfade zu absoluten Adressen zu vervollständigen, und auf welcher Basis.

                MfG ChrisB

                --
                RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?
          2. Hallo,

            RewriteRule ^([a-z]+)/([0-9])$ /index.php?pid=$1&bid=$2 [L]

            ist es Absicht, dass du nur genau eine Ziffer akzeptieren möchtest, und nicht mehrere?

            Das letzte kleine Problem das ich habe. Die zweite RewriteRule beinträchtigt auch die realtiven Links welche sicher innerhalb von index.php befinden. Leider nützt auch das nichts...

            Das verstehe ich leider nicht. Etwas konkreter bitte.

            RewriteCond %{REQUEST_URI} !..+$

            Was ist das? Oder besser: Was *sollte* es sein?

            Ciao,
             Martin

            --
            "Gestern habe ich die Rede des Parteivorsitzenden gehört. Zwei Stunden lang!" - "Worüber?" - "Hat er nicht gesagt."
            Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(
      2. Hallo,

        Folgende Lösung habe ich schon:
        RewriteRule ^([a-z]+)$ index.php?pid=$1
        RewriteRule ^([0-9]+)$ index.php?pid=news&page=$1
        Sämtliche Versuche beide Variablen miteinander auszulesen scheitern in unbrauchbaren Ergebnissen.

        ist Dir klar, dass der geklammerte Ausdruck dafür sorgt, dass etwas gemerkt wird. Willst du zwei unterschiedliche Bereiche merken, so musst Du zweimal etwas einklammern. Welches Zeichen trennt diese beiden unterschiedlichen Dinge, die Du auslesen willst?

        Freundliche Grüße

        Vinzenz