Apache: mod_rewrite Problem
xtomcatx
- webserver
Hallo,
Ich habe gestern begonnen mit mod_rewrite aufm Apache 1.3.33 zu experimentieren und dabei folgendes Problem festgestellt:
Meine .htaccess sieht folgendermaßen aus und liegt auf dem root der Subdomain:
Options +Indexes
RewriteEngine on
RewriteRule ^([^/]*)/([^/]*)\.htm$ /allgemein\.pl\?query=$1&query2=$2 [NC]
Wenn ich jetzt domain.de/blabla/egon.htm aufrufen will, wird domain.de/allgemein.pl?q1=blabla&q2=egon aufgerufen. soweit in ordnung
Wenn ich jedoch domain.de/allgemein/egon.htm aufrufe, wird domain.de/allgemein.pl?q1=allgemein[b].pl[/b]&q2=egon aufgerufen.
Ich finde in dem Regexp, so wie ich sie von Perl aus kenne, einfach keinen Fehler
Das allgemein.pl ist nur für Testzwecke und gibt lediglich die Parameter aus, mit denen es aufgerufen wurde:
#!/usr/bin/perl -w
use strict;
use CGI;
my $q = new CGI;
print $q->header("text/plain");
print "Liste aller übergebenen Parameter:\n\n";
print "$_:".$q->param($_)."\n" foreach $q->param;
Hat jemand eine Idee, woran das liegen könnte? Ich hatte vermutet, dass die RewriteRule vielleicht nochmal angewandt wird, aber schon das erste [^/] müsste dem einen Riegel vorschieben.
Gruß Martin
echo $begrüßung;
Ich habe gestern begonnen mit mod_rewrite aufm Apache 1.3.33 zu experimentieren und dabei folgendes Problem festgestellt:
Für die Fehlersuche könntest du das RewriteLog zu Rate ziehen (wenn du den Server administrieren darfst). RewriteLogLevel (ich nehme immer 9 für die Zeit der Fehlersuche) nicht vergessen! Die Ausgabe ist oft recht umfangreich, was aber daran liegt, dass so ein Umschreiben keine ganz einfach Sache ist.
echo "$verabschiedung $name";
Für die Fehlersuche könntest du das RewriteLog zu Rate ziehen (wenn du den Server administrieren darfst). RewriteLogLevel (ich nehme immer 9 für die Zeit der Fehlersuche) nicht vergessen!
Hatte ich auch schon probiert, es wird aber gar kein Logfile erstellt. Vermutlich haben die Admins das gernerell abgeschaltet um CPU-Last zu reduzieren
echo $begrüßung;
Für die Fehlersuche könntest du das RewriteLog zu Rate ziehen (wenn du den Server administrieren darfst). RewriteLogLevel (ich nehme immer 9 für die Zeit der Fehlersuche) nicht vergessen!
Hatte ich auch schon probiert, es wird aber gar kein Logfile erstellt. Vermutlich haben die Admins das gernerell abgeschaltet um CPU-Last zu reduzieren
Wo hast du das probiert? Wenn du kein Admin bist, kannst du das leider nicht nutzen. Diese Option lässt sich nicht in der .htaccess setzen.
echo "$verabschiedung $name";
Hmm, laut Apachedoc kann ich Options generell schon in der htaccess nutzen
http://httpd.apache.org/docs/2.0/mod/core.html#options
Ob das bei Multiviews eigentlich anders ist, weiß ich nicht, funktioniert hat es. Hab mir die 1&1FAQ nochmal angeschaut und die schreibens da auch in die htaccess
http://faq.1und1.de/hosting/technik/htaccess/4.html
Gruß Martin
Ähm, ich habe jetzt was verhaut. Dachte, Du meinst die Lösung meines Problems.
Ich habe eine httpd.conf in meinem Kundenverzeichnis liegen, wo die DocumentRoots der jeweiligen Domains eingetragen sind, etc. Jeder Kunde hat da anscheinend eine eigene. Die Log Eintragung brachte jedoch keinerlei Ergebnis
Hallo,
Wenn ich jetzt domain.de/blabla/egon.htm aufrufen will, wird domain.de/allgemein.pl?q1=blabla&q2=egon aufgerufen. soweit in ordnung
Wenn ich jedoch domain.de/allgemein/egon.htm aufrufe, wird domain.de/allgemein.pl?q1=allgemein[b].pl[/b]&q2=egon aufgerufen.
da ist nun Raten angesagt.
Ich vermute, das Verzeichnis "./allgemein" gibt es nicht im Dateisystem.
Ich vermute, im Apachen ist mod_negotiation aktiviert.
Ich vermute, die Direktive Options -MultiViews könnte Abhilfe schaffen.
Gruß aus Berlin!
eddi
Es funktioniert, jetzt muss ich mir nur noch anschauen, was dieses mod_negotiation eigentlich macht.
Auf jeden Fall vielen Dank,
Gruß Martin