Problem mit Umwandlung von URL /1/2 zu ?arg1=1&arg2=2

URLs umschreiben, umleiten, blocken oder sperren - all das und noch viel mehr kann mit mod_rewrite erreicht werden. Mit regulären Ausdrücken, Conditions und Rules stehst Du auf Kriegsfuss? mod_rewrite macht nicht das was Du willst, oder funktioniert gar nicht? hier bist Du richtig!

Moderatoren: Bob, Super-Mod

Problem mit Umwandlung von URL /1/2 zu ?arg1=1&arg2=2

Beitragvon Christoph_K » 19.11.2011 19:28

Hallo an alle.

Ich verzweifle langsam und konnte hier im Forum zu dem Problem auch keine Lösung finden. Ich vermute auch, dass es an meiner Apache-Konfiguration liegen kann.

Problem: Ich habe folgende htaccess-Datei zusammengeschustert, die eine URL wie /1/2 zu index.php?arg1=1&arg2=2 umwandeln soll:
Code: Alles auswählen
RewriteEngine On

RewriteRule ^([-0-9a-zA-Z_]+)$ index.php?ARG1=$1&%{QUERY_STRING}

RewriteCond %{REQUEST_URI} !^/bugtracker/?$
RewriteRule ^([-0-9a-zA-Z_]+)/$ index.php?ARG1=$1&%{QUERY_STRING}

RewriteRule ^([-0-9a-zA-Z_]+)/([-0-9a-zA-Z_]+)$ index.php?ARG1=$1&ARG2=$2&%{QUERY_STRING}
RewriteRule ^([-0-9a-zA-Z_]+)/([-0-9a-zA-Z_]+)/$ index.php?ARG1=$1&ARG2=$2&%{QUERY_STRING}
RewriteRule ^([-0-9a-zA-Z_]+)/([-0-9a-zA-Z_]+)/([-0-9a-zA-Z_]+)$ index.php?ARG1=$1&ARG2=$2&ARG3=$3&%{QUERY_STRING}
RewriteRule ^([-0-9a-zA-Z_]+)/([-0-9a-zA-Z_]+)/([-0-9a-zA-Z_]+)/$ index.php?ARG1=$1&ARG2=$2&ARG3=$3&%{QUERY_STRING}
RewriteRule ^([-0-9a-zA-Z_]+)/([-0-9a-zA-Z_]+)/([-0-9a-zA-Z_]+)/([-0-9a-zA-Z_]+)$ index.php?ARG1=$1&ARG2=$2&ARG3=$3&ARG4=$4&%{QUERY_STRING}
RewriteRule ^([-0-9a-zA-Z_]+)/([-0-9a-zA-Z_]+)/([-0-9a-zA-Z_]+)/([-0-9a-zA-Z_]+)/$ index.php?ARG1=$1&ARG2=$2&ARG3=$3&ARG4=$4&%{QUERY_STRING}


Die htaccess-Datei liegt in einem Benutzerordner, sieht ungefähr so aus: http://domain/~benutzername/projektname/.htaccess
Wenn ich jetzt domain/~benutzername/projektname/ aufrufe, kommt die Startseite (index.php), alles korrekt! Aber, wenn ich jetzt domain/~benutzername/projektname/unterordner aufrufe, bekomme ich einen 404er zurück, Seite nicht gefunden wobei er doch eigentlich wieder die index.php aufrufen sollte mit den GET-Paramtetern :-(
Wieso?

Kann das auch an der Apache-Konfiguration liegen, dass das Redirecten auf z.B. index.php?ARG1=$1&%{QUERY_STRING} nicht funktionieren kann, weil das "aktuelle Verzeichnis" nicht korrekt ist?

Achja, wenn ich redirecten lasse auf z.B.
Code: Alles auswählen
RewriteRule ^([-0-9a-zA-Z_]+)$ /index.php?ARG1=$1&%{QUERY_STRING}


also mit Slash vor dem index.php, dann komme ich tatsächlich auf eine index.php raus, aber auf die in http://domain/ ... macht ja auch Sinn ;-) Deshalb die Vermutung mit dem Verzeichnishandling. Kann ich per htaccess sagen, wo das "current directory" liegen soll damit ich ihm mitteilne kann, dass er die index.php in /~username/projektname/ suchen soll?

Oder kennt sich jemand mit dem Apache aus, und dessen Config?
Meine Config sagt für diesen Ordner folgendes aus:

Code: Alles auswählen
<Directory "/var/services/homes/*/www*">
    Options FollowSymLinks Indexes
    ErrorDocument 403 /webdefault/sample.php?status=403&subweb=www
    ErrorDocument 404 /webdefault/sample.php?status=404&subweb=www
    ErrorDocument 500 /webdefault/sample.php?status=500&subweb=www
    AllowOverride All
    Allow from all
    Order Allow,Deny
    DirectoryIndex index.html index.cgi index.php
</Directory>


Habe ich da einen Fehler gemacht oder kann man hier etwas günstiges für mein Problem einstellen??

Ich hoffe natürlich auf Hilfe hier für Euch und wär dankbar

schönen Abend!
Chris



--------------- EDIT ---------------
Ich habe eben RewriteBase entdeckt. Damit kann ich es htaccess ja mitteilen.

Z.B. in meinem Fall:

Code: Alles auswählen
RewriteBase /~benutzername/meinprojekt/


Das funktioniert ;-)

Was ich jetzt ärgentlich finde ist, dass ich das theoretisch bei keinem weiteren Projekt vergessen darf, anzupassen.
Ich betreibe einen eigenen Apache lokal bei mir zuhause und habe noch einen externen Provider für meine Homepage wenn sie live geht.
Auf dem Liveserver brauche ich aber kein RewriteBase anzugeben, da reicht die htaccess im projektordner und ein Reqrite auf index.php, dann wird autmatisch auf die index.php im projektordner geleitet. Wieso klappt das bei mir lokal nicht? Ich hoffe jemand kennt sich da aus, ich schiebe die "Schuld" mal hauptsächlich auf mich, klar :D und dann aber auf Apache...

Hat jemand eine Idee?

LG
Chris
Christoph_K
.
.
 
Beiträge: 11
Registriert: 15.09.2006 13:52

Zurück zu mod_rewrite

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 0 Gäste