Apache: mod_rewrite Problem

Alles, was den Apache betrifft, kann hier besprochen werden.

Apache: mod_rewrite Problem

Postby xtomcatx » 07. March 2006 19:05

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:

Code: Select all
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.pl&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:

Code: Select all
#!/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
xtomcatx
 
Posts: 3
Joined: 07. March 2006 17:03

Postby thorsin » 07. March 2006 19:08

dein regex prüft wahrscheinlich nicht vom anfang sondern vom ende... soll heissen, nur die letzte variable wird so übergeben, bei allem andern hängt er ein.pl dran, probier das mal mit nem verzeichnis, das 2 ordner tiefer liegt, wenn er da dann 3mal *.pl macht stimmt was ich grade gesagt habe...


EDIT: sorry, war quatsch, kommt davon wenn man regex nur überfliegt, kleinen mom

EDIT2: so wie ich das sehe verhält sich der Regex korrekt, probier mal allgemein/bla/bla2 dabei sollte irgendwie sowas wie www.domain.de/allgemein/allgemein/allge ... para2=bla2 rauskommen ---> also regex ausbessern
User avatar
thorsin
 
Posts: 136
Joined: 05. March 2006 20:39

Postby xtomcatx » 07. March 2006 19:22

Danke erstmal für die schnelle Reaktion

thorsin wrote:probier mal allgemein/bla/bla2

Das matcht er natürlich gar nicht erst, weil zum einen die Extension fehlt und zum andern das Verzeichnis zu tief ist. Meinst Du, den Aufruf von /allgemein aus starten? Also die htaccess da nochmal reinlegen oder wie meinst Du das?

Gruß Martin
xtomcatx
 
Posts: 3
Joined: 07. March 2006 17:03

Postby Qixs » 08. March 2006 10:01

Code: Select all
RewriteRule ^([^/]*)/([^/]*)\.htm$ /allgemein\.pl\?query=$1&query2=$2 [NC]


Die Ersetzungsregel sollte mit ^/ beginnen.
Freemail mit eigener Subdomain: http://Qixs.de
Qixs
 
Posts: 2
Joined: 08. March 2006 08:53

Postby xtomcatx » 08. March 2006 11:28

Wenn ich den RegExp mit einem / beginnen lasse, matcht er aus irgendeinem Grund gar nichts.

Der Fehler ist gefunden, mod_negotiation wird geladen und anscheinend ist standard:
Options +Multiviews

Somit behebt ein Options -Multiviews das Problem

Dennoch vielen Dank,
Gru Martin
xtomcatx
 
Posts: 3
Joined: 07. March 2006 17:03


Return to Apache

Who is online

Users browsing this forum: No registered users and 29 guests