Mod-Rewrite Problem
Revolution
- webserver
0 dedlfix0 Revolution0 dedlfix
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
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";
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
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";
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