; mit ? und & ersetzen ... : mit = ersetzen

  • Thread starter Thread starter Deleted member 11691
  • Start date Start date
D

Deleted member 11691

Guest
Hallo,

ich habe folgendes vor:
Code:
abc.crm -> index.php?page=$1
abc.crm;def:ghi -> index.php?page=$1&def=ghi
abc.crm;jkl:mno -> index.php?page=$1&def=ghi&jkl=mno
So mach ich es immer:
Code:
RewriteRule ^([a-zA-Z0-9]+)\.crm index.php?page=$1
RewriteRule ^([a-zA-Z0-9]+)\.crm\;(.*)\:(.*) index.php?page=$1&$3=$4
RewriteRule ^([a-zA-Z0-9]+)\.crm\;(.*)\:(.*)\;(.*)\:(.*) index.php?page=$1&$3=$4&$5=$6
allerdings möchte ich das in ein bis zwei Regeln zusammenfassen... Wie geht das?
 
Doch, das Problem ist allerdings, sobald mehr als nur 2 CGI-Parameter auftauchen, gibt er einen 404er aus :(
 
Was heißt bitte bei mehr als zwei CGI-Parametern gibt es einen 404?
Wenn dem so ist, handelt es sich eher um ein Problem deines PHP-Programms, das einen 404-Header ausgibt.

Ansonsten schalte doch mal in deiner vhost.conf mit
RewriteLog /var/log/apache2/rewrite_log
und
RewriteLogLevel 4
das Loggen von mod_reqwrite ein.
Achtung: Logdatei wird sehr groß, deswegen nur zum Debuggen aktivieren.
 
Ah, ich seh gerade. In meinem ersten Post ist ein Fehler:

Die URLs sollten so aufrufbar sein:

Code:
abc.crm;a:b -> abc.php?a=b
abc.crm;a:b;c:d -> abc.php?a=b&c=d
abc.crm;a;b;c:d;e:f -> abc.php?a=b&c=d&e=f
abc.crm;a:b;c:d;e:f;g:h -> abc.php?a=b&c=d&e=f&g=h
 
Was nutzt Dir Apaches mod_rewrite wenn Du mal den HTTPd wechseln willst/musst?

Das was Du da machen möchtest, verstösst eigentllich gegen http://www.ietf.org/rfc/rfc2396.txt (Section 2.2/3.4), da die von Dir gewählten Trennzeichen anderweitig reserviert sind. Leider werden die URI-relevanten RFCs nur sehr selten strikt umgesetzt, so dass Dein Vorhaben klappen kann aber nicht muss.

Sei bitte so nett und nimm wenigstens die dafür vorgesehenen Trennzeichen und ob Du dann mod_rewrite verwendest, oder die Logik in die WebApp packst, ist mir egal, auch wenn ich die WebApp bevorzugen würde.
 
Bevor man überhaupt so einen (sorry) Mist implementiert, sollte man sich mal mit REST als Architekturstil beschäftigen. Da werden nicht nur die RFC bitterböse getreten, sondern auch das grundsätzliche Wesen des Webs bzw. das Hypertext Transfer Protocol aufs Gröbste missachtet.
 
Back
Top