Problem mit Umwandlung von URL /1/2 zu ?arg1=1&arg2=2
Verfasst: 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:
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.
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:
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:
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 und dann aber auf Apache...
Hat jemand eine Idee?
LG
Chris
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}
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}
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>
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/
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 und dann aber auf Apache...
Hat jemand eine Idee?
LG
Chris