Revolution: Mod-Rewrite Problem

Guten Tag

wenn ich folgende Mod-Rewrite Regel verwende

RewriteEngine On  
RewriteRule ^(.*) /index.cgi/$1 [L]

erhalte ich ein Server Error

Internal Server Error
The server encountered an internal error or misconfiguration and was unable to complete your request.

ändere ich die Regel wie folgt ab

RewriteEngine On  
RewriteRule ^(.*).htm /index.cgi/$1 [L]

kommt kein Fehler, jedoch muss ich immer .htm dahinter schreiben.

Was ist an der 1. Regel falsch?
Bzw. wie muss ich diese Regel abändern, damit diese Regel funktioniert?

die Links, die per Mod-Rewrite umgeschrieben werden sollen, sehen in etwa so aus
example.org
example.org/test
example.org/test/test.htm
example.org/test/[...]/test.htm

Als Webserver wird der Apache 1.3.37 verwendet.

Danke
Revolution

  1. echo $begrüßung;

    RewriteRule ^(.*) /index.cgi/$1 [L]

    Internal Server Error

    Eine genauere Fehlermeldung bekommst du im Error-Log. Der 500er kann alles mögliche sein. Vielleicht ist es bei dir der Fall, dass du eine Endlosschleife produziert hast, .* trifft möglicherweise auch auf dein Ziel (index.cgi) zu, aber das ist erstmal nur Spekulation.
    Ebenfalls zur Fehlersuche hilfreich ist das RewriteLog (bei ausreichendem RewritelogLevel). Dies kann man aber nur in der Serverkonfiguration freischalten.

    ändere ich die Regel wie folgt ab

    RewriteEngine On

    RewriteRule ^(.*).htm /index.cgi/$1 [L]

    
    > kommt kein Fehler, jedoch muss ich immer .htm dahinter schreiben.  
      
    Ich spekuliere weiter: Durch das .htm wird .cgi ausgeschlossen, weswegen die RewriteRule beim zweiten Durchlauf nicht mehr greift.  
      
    
    > Was ist an der 1. Regel falsch?  
    > Bzw. wie muss ich diese Regel abändern, damit diese Regel funktioniert?  
      
    Falls meine Spekulation richtig ist, könntest du mit einer RewriteCond die index.cgi oder (vielleicht besser) real existierende Dateien und Verzeichnisse ausschließen.  
      
      
    echo "$verabschiedung $name";
    
    1. Hi dedlfix

      RewriteRule ^(.*) /index.cgi/$1 [L]

      Internal Server Error

      Eine genauere Fehlermeldung bekommst du im Error-Log. Der 500er kann alles mögliche sein. Vielleicht ist es bei dir der Fall, dass du eine Endlosschleife produziert hast, .* trifft möglicherweise auch auf dein Ziel (index.cgi) zu, aber das ist erstmal nur Spekulation.
      Ebenfalls zur Fehlersuche hilfreich ist das RewriteLog (bei ausreichendem RewritelogLevel). Dies kann man aber nur in der Serverkonfiguration freischalten.

      im Rewrite Log wurde nichts eingetragen
      in der error.log tauscht folgendes aus

      mod_rewrite: maximum number of internal redirects reached. Assuming configuration error. Use 'RewriteOptions MaxRedirects' to increase the limit if neccessary.

      Falls meine Spekulation richtig ist, könntest du mit einer RewriteCond die index.cgi oder (vielleicht besser) real existierende Dateien und Verzeichnisse ausschließen.

      wie muss ich das machen?

      Danke
      Revolution

      1. echo $begrüßung;

        im Rewrite Log wurde nichts eingetragen

        Das glaube ich nicht, oder du hast das RewriteLogLevel zu niedrig eingestellt.

        in der error.log tauscht folgendes aus

        mod_rewrite: maximum number of internal redirects reached. Assuming configuration error. Use 'RewriteOptions MaxRedirects' to increase the limit if neccessary.

        Also doch eine Endlosschleife.

        Falls meine Spekulation richtig ist, könntest du mit einer RewriteCond die index.cgi oder (vielleicht besser) real existierende Dateien und Verzeichnisse ausschließen.
        wie muss ich das machen?

        Wenn du den Apache-Handbuchabschnitt zu RewriteCond liest, findest du Hinweise auf die Spezial-Pattern -d und -f sowie einen Hinweis, wie man ein Pattern negiert.

        echo "$verabschiedung $name";

        1. hi

          im Rewrite Log wurde nichts eingetragen

          Das glaube ich nicht, oder du hast das RewriteLogLevel zu niedrig eingestellt.

          es lag am RewriteLogLevel
          nachdem ich RewriteLogLevel 2 verwendet habe, lief das Log ziemlich schnell voll

          xxx.xxx.xxx.xxx - - [16/Jun/2007:18:18:23 +0200] [DOMAIN.TLD/sid#828d5c4][rid#820e0cc/initial] (2) [per-dir /home/USER/DOMAIN.TLD/] rewrite wiki -> /blub/index.cgi/wiki
          xxx.xxx.xxx.xxx - - [16/Jun/2007:18:18:23 +0200] [DOMAIN.TLD/sid#828d5c4][rid#820e0cc/initial] (2) [per-dir /home/USER/DOMAIN.TLD/] trying to replace prefix /home/USER/DOMAIN.TLD/ with /
          xxx.xxx.xxx.xxx - - [16/Jun/2007:18:18:23 +0200] [DOMAIN.TLD/sid#828d5c4][rid#820e0cc/initial] (1) [per-dir /home/USER/DOMAIN.TLD/] internal redirect with /blub/index.cgi/wiki [INTERNAL REDIRECT]
          xxx.xxx.xxx.xxx - - [16/Jun/2007:18:18:23 +0200] [DOMAIN.TLD/sid#828d5c4][rid#8212bb4/initial/redir#1] (2) [per-dir /home/USER/DOMAIN.TLD/] rewrite blub/index.cgi/wiki -> /blub/index.cgi/blub/index.cgi/wiki
          xxx.xxx.xxx.xxx - - [16/Jun/2007:18:18:23 +0200] [DOMAIN.TLD/sid#828d5c4][rid#8212bb4/initial/redir#1] (2) [per-dir /home/USER/DOMAIN.TLD/] trying to replace prefix /home/USER/DOMAIN.TLD/ with /
          xxx.xxx.xxx.xxx - - [16/Jun/2007:18:18:23 +0200] [DOMAIN.TLD/sid#828d5c4][rid#8212bb4/initial/redir#1] (1) [per-dir /home/USER/DOMAIN.TLD/] internal redirect with /blub/index.cgi/blub/index.cgi/wiki [INTERNAL REDIRECT]
          xxx.xxx.xxx.xxx - - [16/Jun/2007:18:18:23 +0200] [DOMAIN.TLD/sid#828d5c4][rid#8144954/initial/redir#2] (2) [per-dir /home/USER/DOMAIN.TLD/] rewrite blub/index.cgi/blub/index.cgi/wiki -> /blub/index.cgi/blub/index.cgi/blub/index.cgi/wiki
          xxx.xxx.xxx.xxx - - [16/Jun/2007:18:18:23 +0200] [DOMAIN.TLD/sid#828d5c4][rid#8144954/initial/redir#2] (2) [per-dir /home/USER/DOMAIN.TLD/] trying to replace prefix /home/USER/DOMAIN.TLD/ with /
          xxx.xxx.xxx.xxx - - [16/Jun/2007:18:18:23 +0200] [DOMAIN.TLD/sid#828d5c4][rid#8144954/initial/redir#2] (1) [per-dir /home/USER/DOMAIN.TLD/] internal redirect with /blub/index.cgi/blub/index.cgi/blub/index.cgi/wiki [INTERNAL REDIRECT]
          [...]

          ich hatte die cgi Datei im Ordner blub verschoben, da ich etwas testen wollte.

          Wenn du den Apache-Handbuchabschnitt zu RewriteCond liest, findest du Hinweise auf die Spezial-Pattern -d und -f sowie einen Hinweis, wie man ein Pattern negiert.

          ich hatte vorhin schon mal mit -f getestet, jedoch erhielt ich wieder ein 500er

          eben habe ich

          RewriteCond %{REQUEST_FILENAME} !-f
          RewriteRule ^(.*)$ /blub/index.cgi/$1   [L]

          probiert, damit scheint es zu gehen :-)

          danke!
          Revolution