Viennamade: RewriteRule mit uneinheitlichen Ergebnissen?

Hallo liebe Forumer!

Ich habe die folgenden 4 Zeilen in www.xyz.at/.htaccess stehen:
1: RewriteRule (halogen|led)/$ $1/$1.php [L]
2: RewriteRule fluoreszenz/$ fluorescence/fluorescence.php [L]
3: RewriteRule fluorescence/$ fluorescence/fluorescence.php [L]
4: # RewriteRule (fluoreszenz|fluorescence)/$ fluorescence/fluorescence.php [L]

In den Ziel-URIs habe ich ein »echo $_SERVER['REQUEST_URI'];«

In den Adresszeile des Browsers tippe ich ein:
www.xyz.at/led .... das echo gibt /led/ aus, OK
www.xyz.at/led/ ... das echo gibt /led/ aus, OK
Das gleiche zufriedenstellende Ergebniss habe ich mit halogen, nicht mit fluoreszenz:

In den Adresszeile des Browsers tippe ich ein:
www.xyz.at/fluorescence .... das echo gibt /fluorescence/ aus, OK
www.xyz.at/fluorescence/.... das echo gibt /fluorescence/ aus, OK
www.xyz.at/fluoreszenz/..... das echo gibt /fluoreszenz/ aus, OK
www.xyz.at/fluoreszenz/..... das echo gibt /fluoreszenz/ aus, OK
www.xyz.at/fluoreszenz ..... 404 not found

Verstehe ich nicht.
Bitte um Hilfe,
Viennamade

  1. Hi,

    www.xyz.at/fluorescence .... das echo gibt /fluorescence/ aus, OK
    www.xyz.at/fluoreszenz ..... 404 not found
    Verstehe ich nicht.

    Dein Verzeichnis im Filesystem heißt fluorescence. Diese Umleitung erfolgt, bevor die RewriteRules greifen. Genauer: Deine Rules beachten diesen Fall nicht, das ist ein allgemeiner Mechanismus des Apache.

    Cheatah

    --
    X-Self-Code: sh:( fo:} ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
    X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
    X-Will-Answer-Email: No
    X-Please-Search-Archive-First: Absolutely Yes
    1. Hallo Cheatah!

      www.xyz.at/fluorescence .... das echo gibt /fluorescence/ aus, OK
      www.xyz.at/fluoreszenz ..... 404 not found
      Verstehe ich nicht.

      Ich verstehe es nicht ganz, insbesondere deshalb weil www.xyz.at/fluoreszenz/ funktioniert, das Ganze ohne abschließenden Schrägstrich jedoch nicht.

      Jetzt versuche ich mal Deine Antwort zu verstehen.

      Dein Verzeichnis im Filesystem heißt fluorescence.

      OK.

      Diese Umleitung erfolgt, bevor die RewriteRules greifen.

      Ich denke Du meinst die 404er-Umleitung? Weiter unten in der .htaccess habe ich ein ErrorDocument angeführt.

      Genauer: Deine Rules beachten diesen Fall nicht, das ist ein allgemeiner Mechanismus des Apache.

      Welchen Fall, den 404er?
      Noch einen Deut bitte ...

      Beste Grüße
      Viennamade

      1. Hi,

        Ich verstehe es nicht ganz, insbesondere deshalb weil www.xyz.at/fluoreszenz/ funktioniert, das Ganze ohne abschließenden Schrägstrich jedoch nicht.

        der Server findet nichts, das mit /fluoreszenz verknüpft wäre. Für /fluoreszenz/ hat er eine RewriteRule, bei /fluorescence findet er ein entsprechendes Verzeichnis.

        Diese Umleitung erfolgt, bevor die RewriteRules greifen.
        Ich denke Du meinst die 404er-Umleitung?

        Eine Umleitung ist 301 oder 302.

        Genauer: Deine Rules beachten diesen Fall nicht, das ist ein allgemeiner Mechanismus des Apache.
        Welchen Fall, den 404er?

        Nein, die /fluoreszenz ohne Slash.

        Noch einen Deut bitte ...

        Gerne: Würde der Server bei "/foo" _nicht_ von sich aus umleiten, sofern es ein Verzeichnis "/foo/" gibt, würde der Browser niemals erfahren, dass eine Referenz auf "bar" zu "/foo/bar" führen muss, anstatt zu "/bar".

        Cheatah

        --
        X-Self-Code: sh:( fo:} ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
        X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
        X-Will-Answer-Email: No
        X-Please-Search-Archive-First: Absolutely Yes
        1. Hallo!

          Ich verstehe es nicht ganz, insbesondere deshalb weil www.xyz.at/fluoreszenz/ funktioniert, das Ganze ohne abschließenden Schrägstrich jedoch nicht.

          der Server findet nichts, das mit /fluoreszenz verknüpft wäre. Für /fluoreszenz/ hat er eine RewriteRule, bei /fluorescence findet er ein entsprechendes Verzeichnis.

          Schlag ich mir mit der flachen Hand auf die Stirne - Klatsch !

          Diese Umleitung erfolgt, bevor die RewriteRules greifen.
          Ich denke Du meinst die 404er-Umleitung?

          Eine Umleitung ist 301 oder 302.

          Klar.

          Genauer: Deine Rules beachten diesen Fall nicht, das ist ein allgemeiner Mechanismus des Apache.
          Welchen Fall, den 404er?
          Nein, die /fluoreszenz ohne Slash.

          Jetzt ist es logisch

          Noch einen Deut bitte ...

          Gerne: Würde der Server bei "/foo" _nicht_ von sich aus umleiten, sofern es ein Verzeichnis "/foo/" gibt, würde der Browser niemals erfahren, dass eine Referenz auf "bar" zu "/foo/bar" führen muss, anstatt zu "/bar".

          OK, ich merke mir: Der Server liest die RewriteRule von links nach rechts und zwar _Wort_für_Wort_ (nicht wie unsereins Wortkombinationen fotografierend).

          Besten Danke Cheatah,
          Viennamade

          1. Hi,

            Jetzt ist es logisch

            das glaube ich Dir zwar, aber an einer Stelle hast Du mich wohl noch falsch verstanden:

            Gerne: Würde der Server bei "/foo" _nicht_ von sich aus umleiten, sofern es ein Verzeichnis "/foo/" gibt, würde der Browser niemals erfahren, dass eine Referenz auf "bar" zu "/foo/bar" führen muss, anstatt zu "/bar".
            OK, ich merke mir: Der Server liest die RewriteRule von links nach rechts und zwar _Wort_für_Wort_ (nicht wie unsereins Wortkombinationen fotografierend).

            Nein, hier war die Ziel-URL eines (z.B.) <a href="bar"> gemeint, wenn sich das Dokument unter der einen oder der anderen URL befindet. Dieser Vorgang hat mit RewriteRules nichts zu tun.

            Cheatah

            --
            X-Self-Code: sh:( fo:} ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
            X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
            X-Will-Answer-Email: No
            X-Please-Search-Archive-First: Absolutely Yes
  2. Hi,

    Ich habe die folgenden 4 Zeilen in www.xyz.at/.htaccess stehen:
    1: RewriteRule (halogen|led)/$ $1/$1.php [L]
    2: RewriteRule fluoreszenz/$ fluorescence/fluorescence.php [L]
    3: RewriteRule fluorescence/$ fluorescence/fluorescence.php [L]
    4: # RewriteRule (fluoreszenz|fluorescence)/$ fluorescence/fluorescence.php [L]

    Alle Deine Rewrite-Regeln (auch die auskommentierte) verlangen, daß am Ende der umzuschreibenden URL ein / steht (da steht jeweils /$ am Ende).

    www.xyz.at/fluoreszenz ..... 404 not found

    Aus welchem Grund meinst Du dann, daß diese URL, die keinen / am Ende hat, durch die Rewrite-Regeln in irgendeiner Weise verändert werden könnte?

    cu,
    Andreas

    --
    MudGuard? Siehe http://www.Mud-Guard.de/
    Fachfragen per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.
    1. Hallo!

      Ich habe die folgenden 4 Zeilen in www.xyz.at/.htaccess stehen:
      1: RewriteRule (halogen|led)/$ $1/$1.php [L]
      2: RewriteRule fluoreszenz/$ fluorescence/fluorescence.php [L]
      3: RewriteRule fluorescence/$ fluorescence/fluorescence.php [L]
      4: # RewriteRule (fluoreszenz|fluorescence)/$ fluorescence/fluorescence.php [L]

      Alle Deine Rewrite-Regeln (auch die auskommentierte) verlangen, daß am Ende der umzuschreibenden URL ein / steht (da steht jeweils /$ am Ende).

      Stimmt, ich habe jetzt vor die Zeile 2 eine umzuschreibende URL ohne abschließenden / reingetan ...
         RewriteRule fluoreszenz$ fluorescence/fluorescence.php [L]
      ... und es funktioniert.

      www.xyz.at/fluoreszenz ..... 404 not found
      Aus welchem Grund meinst Du dann, daß diese URL, die keinen / am Ende hat, durch die Rewrite-Regeln in irgendeiner Weise verändert werden könnte?

      Stimmt, nirgendwo ist dafür eine Rule. Andererseits, mit fluorescence funktionierts ja auch ohne abschließenden / und ohne daß es dafür eine Rule gibt. Ich werde mir das jetzt noch genauer anschauen, vielleicht komme ich ja dahinter.

      Vielen Dank an Dich und Cheatah,
      Viennamade

      1. Hi,

        Stimmt, nirgendwo ist dafür eine Rule. Andererseits, mit fluorescence funktionierts ja auch ohne abschließenden / und ohne daß es dafür eine Rule gibt. Ich werde mir das jetzt noch genauer anschauen, vielleicht komme ich ja dahinter.

        Das liegt daran, daß fluorescence ein real existierendes Verzeichnis ist - da macht der Apache den "Rewrite" selbständig.

        cu,
        Andreas

        --
        MudGuard? Siehe http://www.Mud-Guard.de/
        Fachfragen per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.
        1. Hallo!

          Stimmt, nirgendwo ist dafür eine Rule. Andererseits, mit fluorescence funktionierts ja auch ohne abschließenden / und ohne daß es dafür eine Rule gibt. Ich werde mir das jetzt noch genauer anschauen, vielleicht komme ich ja dahinter.

          Das liegt daran, daß fluorescence ein real existierendes Verzeichnis ist - da macht der Apache den "Rewrite" selbständig.

          Na gut, ich nehme das zur Kenntnis - g. Ich verstehe was Du sagst, aber es will nicht in meinen Kopf rein, anders ausgedrückt, ich will nicht, das es so ist :-) Aber dafür kann ja das Forum nichts.

          So siehts jetzt aus:
          RewriteRule fluorescence/$ fluorescence/fluorescence.php [L]
          RewriteRule fluoreszenz[/]{0,1}$ fluorescence/fluorescence.php [L]

          Danke nochmals!
          Viennamade

          1. Hi,

            So siehts jetzt aus:
            RewriteRule fluorescence/$ fluorescence/fluorescence.php [L]

            Das könnte man auch über den DirectoryIndex erledigen.

            RewriteRule fluoreszenz[/]{0,1}$ fluorescence/fluorescence.php [L]

            Weder die Zeichenklasse noch das {}-Konstrukt ist notwendig. Nimm ...enz/?$

            cu,
            Andreas

            --
            MudGuard? Siehe http://www.Mud-Guard.de/
            Fachfragen per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.
            1. Hallo!

              So siehts jetzt aus:
              RewriteRule fluorescence/$ fluorescence/fluorescence.php [L]
              Das könnte man auch über den DirectoryIndex erledigen.

              Ich habe mir mod_dir durchgelesen, werde es der Einheitlichkeit wegen nicht verwenden.

              RewriteRule fluoreszenz[/]{0,1}$ fluorescence/fluorescence.php [L]

              Weder die Zeichenklasse noch das {}-Konstrukt ist notwendig. Nimm ...enz/?$

              Stimmt ... there might be a / or not.

              Besten Dank Andreas,
              Viennamde