TomIRL: Probleme mit rewrite Engine

Folgende Rules machen bei mir auf einem 1und1 Server Probleme:
 RewriteEngine On

# catches all cathegories
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteRule "^cat/([a-z0-9_-.,/]+?)/?([0-9]{0,4})/?$" archive.php?cat=$1&y=$2 [QSA]

Wenn die .htaccess auf dem Server liegt, dann bringt er einen 500.
Siechfred hat herausgefunden, dass dies an folgendem liegt: '+?'
Als Lösung bietet er an,
^cat/([a-z0-9_\-\.,/]+)/?([0-9]{0,4})/?$
Diese Kombination kann aber nicht vierstelligen Zahlen wie zum Beispiel 2006 umsetzen. Ursächlich für den 500 ist eine veraltete Rewrite Engine.
Ich habe keinen Zugriff auf die Error.log und die rewrite.log.
Kann mir jemand einen Hinweis geben, welche andere Möglichkeit ich habe die rewrite Rule so umzuformulieren, dass die 2006 erkannt wird?

Wenn ich hier noch Information vergessen habe, dann bitte nachfragen.
Viele Grüße TomIRL

  1. hi,

    RewriteRule "^cat/([a-z0-9_-.,/]+?)/?([0-9]{0,4})/?$" archive.php?cat=$1&y=$2 [QSA]

    Warum kleidest du den Suchausdruck in Anführungszeichen ein?
    Das ist m.W. weder üblich noch erforderlich.

    Wenn die .htaccess auf dem Server liegt, dann bringt er einen 500.
    Siechfred hat herausgefunden, dass dies an folgendem liegt: '+?'

    Wo kommt das im Suchausdruck vor?
    Meinst du das +? hinter der ersten Zeichenklasse?

    Als Lösung bietet er an,
    ^cat/([a-z0-9_\-\.,/]+)/?([0-9]{0,4})/?$
    Diese Kombination kann aber nicht vierstelligen Zahlen wie zum Beispiel 2006 umsetzen.

    Heißt?
    Der hintere Teil, der eine 0- bis 4-stellige Ziffernkombination abfragt, ist doch gleich geblieben?
    Oder meinst du im ersten Teil in der Zeichenklasse?

    Ursächlich für den 500 ist eine veraltete Rewrite Engine.

    Und über ein Update des Moduls lässt der Provider nicht mit sich reden?

    Ich habe keinen Zugriff auf die Error.log und die rewrite.log.

    Könntest die aktuell verwendeten Versionen erfragen, und versuchen dir das auf einem lokalen Testsystem nachzubauen.

    gruß,
    wahsaga

    --
    /voodoo.css:
    #GeorgeWBush { position:absolute; bottom:-6ft; }
    1. Hi
      Zunächst mal vielen Dank für Deine Hinweise.

      RewriteRule "^cat/([a-z0-9_-.,/]+?)/?([0-9]{0,4})/?$" archive.php?cat=$1&y=$2 [QSA]

      Warum kleidest du den Suchausdruck in Anführungszeichen ein?
      Das ist m.W. weder üblich noch erforderlich.

      Hm, habe ich zwischenzeitlich ohne Anführungsstriche getestet.
      Bei der verwendeten Software, handelt es sich um Jeenas jlog.
      Der Bug ist hier beschrieben:
      http://jeenaparadies.net/bugs/task/132
      Ich habe Siechfreds Rat befolgt und die Zeile entsprechend geändert, mit dem Erfolg, dass ich einen 404 bekommen habe.

      Wenn die .htaccess auf dem Server liegt, dann bringt er einen 500.
      Siechfred hat herausgefunden, dass dies an folgendem liegt: '+?'

      Wo kommt das im Suchausdruck vor?
      Meinst du das +? hinter der ersten Zeichenklasse?

      Genau dieses ist gemeint.

      Heißt?
      Der hintere Teil, der eine 0- bis 4-stellige Ziffernkombination abfragt, ist doch gleich geblieben?

      Ursächlich für den 500 ist eine veraltete Rewrite Engine.

      Und über ein Update des Moduls lässt der Provider nicht mit sich reden?

      Darüber verhandel ich gerade mit Ihm. :)
      Das wäre die einfachste Lösung

      Ich habe keinen Zugriff auf die Error.log und die rewrite.log.

      Könntest die aktuell verwendeten Versionen erfragen, und versuchen dir das auf einem lokalen Testsystem nachzubauen.

      Ein Testsystem bringt die Fehler ein Update der Rewrite Engine bringt  Abhlife. :)
      Mir fällt allerdings keine andere Lösung ein wie ich die URL so wie in http://jeenaparadies.net/webdesign/jlog/doc/index.php?n=Main.URLF�rPermanentenLink meinem Server mundgerecht umsetzen kann.
      TomIRL

      1. Hi TomIRL,

        Ein Testsystem bringt die Fehler ein Update der Rewrite Engine bringt  Abhlife. :)
        Mir fällt allerdings keine andere Lösung ein wie ich die URL so wie in http://jeenaparadies.net/webdesign/jlog/doc/index.php?n=Main.URLF�rPermanentenLink meinem Server mundgerecht umsetzen kann.

        PATHINFO ist eine Möglichkeit die ich ebenfalls auf einem Server nutze, auf dem kein mod_rewrite zur Verfügung steht - in meiner Signatur sieht du den Link zu den gepatchten JLog Dateien, mit denen musst du einfach die vorhandenen JLog Dateien überschreiben.

        Eine URL sähe dann z.B. so aus:

        http://www.example.com/log.php/2006/07/url-des-blogeintrages

        Eine Live-Demo kansnt du dir bei SchauMerlMal.de ansehen. Allerdings kommt der Patch nicht mit Slashs in URLs der Blog-Einträge klar, aber in der Regel dürfte man das wohl eh nicht benötigen...

        MfG, Dennis.

        --
        Mein SelfCode: ie:{ fl:( br:> va:) ls:[ fo:) rl:( n4:# ss:) de:] js:| ch:{ sh:| mo:} zu:|
        Patch zur Verwendung von PATHINFO in JLog
        Viele Menschen sind gut erzogen, um nicht mit vollem Mund zu sprechen, aber sie haben keine Bedenken, es mit leerem Kopf zu tun. (Orson Welles)
        1. Hi Dennis,
          Ein interressanter Aspekt die Suchmaschinenfreundlichkeit über pathinfo zu realisieren. Habe ich mir für die Zukunft gemerkt.
          Jetzt habe aber ich so viel Zeit in dieses Problem investiert, dass ich jetzt auch den Ehrgeiz habe die Rules auf diesem blöden Server zum laufen zu bekommen. :) ich werde also auf Deine modifizierten Dateien nur im äußersten Notfall zurückgreifen.
          Mod_rewrite sollte ja eigentlich gehen, ich weiß nur noch nicht wie :).

          Viele Grüße TomIRL

          1. Hi TomIRL,

            Mod_rewrite sollte ja eigentlich gehen, ich weiß nur noch nicht wie :).

            Wenn dich z.B. das index.php in der Pathinfo-URL stört, kannst du mod_rewrite nutzen und show(.*)$ auf index.php$1 umleiten - dann hast du auch dein mod_rewrite genutzt ;-)

            MfG, Dennis.

  2. Folgende Rules machen bei mir auf einem 1und1 Server Probleme:
    RewriteEngine On

    # catches all cathegories
      RewriteCond %{REQUEST_FILENAME} !-f
      RewriteCond %{REQUEST_FILENAME} !-d

    Existiert denn das Verzeichnis /cat/? Wenn nicht, dann spare dir die Conditions, sie werden dann immer wahr ergeben. (Hat jetzt nichts mit dem Problem zu tun, ist nur eine Sache der Performance, die Conditions werden nach der Rule geprüft.)

    RewriteRule "^cat/([a-z0-9_-.,/]+?)/?([0-9]{0,4})/?$" archive.php?cat=$1&y=$2 [QSA]

    Wenn die .htaccess auf dem Server liegt, dann bringt er einen 500.
    Siechfred hat herausgefunden, dass dies an folgendem liegt: '+?'

    Das ist eine Perl-RegEx ("non-greedy").

    Ursächlich für den 500 ist eine veraltete Rewrite Engine.

    Nein. Ursächlich ist ein seit 5 Jahren veralteter Apache Webserver. Der 1.3 branch nutzt die POSIX RegEx library, versteht entspr. den Ausdruck +? nicht. Die 2.x branches nutzen die hier benötigte PCRE library. Mit dem Modul selbst direkt hat das insoweit nichts zu tun.

    Wenn du sicherstellen kannst, dass wenn das Jahr vorkommt immer ein Slash davor ist - also /abcde/2006, dann kannst du das auch in zwei Regeln aufsplitten. Ohne das genaue "URL-Layout" zu kennen ist das aber nur Rumraterei.

    Grüße
    Bob