[Apache] .htaccess mod_rewrite probleem

Pagina: 1
Acties:

  • Icelus
  • Registratie: Januari 2004
  • Niet online
Ik probeer met een .htaccess bestand urls te herschrijven. Ik heb al verschillende instellingen geprobeerd die geen van allen het gewenste resultaat geven. De server staat bij een hostbedrijf dus daar heb ik niet zoveel invloed op.
Het bestand .htaccess en test.php staan beiden in de root.

Het test.php bestand:
PHP:
1
2
3
print_r( $_GET );
echo '<br/>';
print_r( $_SERVER );


Test 1: domein.nl/123
code:
1
2
RewriteEngine on
RewriteRule ^(.+) test.php?a=$1&b=$2
$_GET: [a] => test.php [b] =>
$_SERVER[REDIRECT_QUERY_STRING] => a=123&b=
$_SERVER[QUERY_STRING] => a=test.php&b=

Test 2: domein.nl/123/
Met afsluit slash:
code:
1
2
RewriteEngine on
RewriteRule ^(.+)/ test.php?a=$1&b=$2
$_GET: [a] => 123 [b] =>
$_SERVER[REDIRECT_QUERY_STRING] => a=123&b=
$_SERVER[QUERY_STRING] => a=123&b=

Test 3: domein.nl/123/
Met optionele afsluit slash:
code:
1
2
RewriteEngine on
RewriteRule ^(.+)/? test.php?a=$1&b=$2
$_GET: [a] => test.php [b] =>
$_SERVER[REDIRECT_QUERY_STRING] => a=123&b=
$_SERVER[QUERY_STRING] => a=test.php&b=

Test 4: domein.nl/123
code:
1
2
RewriteEngine on
RewriteRule ^/(.+)$ test.php?a=$1&b=$2
Geeft 404 fout.

Test 5: domein.nl/123,456
code:
1
2
RewriteEngine on
RewriteRule ^(.+),(.+) test.php?a=$1&b=$2
$_GET: [a] => 123 [b] => 456
$_SERVER[REDIRECT_QUERY_STRING] => a=123&b=456
$_SERVER[QUERY_STRING] => a=123&b=456

Test 6: domein.nl/123
code:
1
2
RewriteEngine on
RewriteRule ^(.+),?(.+)? test.php?a=$1&b=$2
$_GET: [a] => test.php [b] =>
$_SERVER[REDIRECT_QUERY_STRING] => a=123&b=
$_SERVER[QUERY_STRING] => a=test.php&b=

Test 1 geeft test.php in QUERY_STRING mee terwijl de REDIRECT_QUERY_STRING correct is?!
Test 2 is correct maar vereist een slash aan het eind.
Test 3 is gelijk aan test 1 qua uitvoer.
Test 4 geeft een 404 fout.
Test 5 is correct.
Test 6 is gelijk aan test 1 qua uitvoer.

Heeft iemand een idee waar het aan ligt?

Developer Accused Of Unreadable Code Refuses To Comment


  • G33rt
  • Registratie: Februari 2002
  • Laatst online: 22-06-2022
Wat probeer je waarnaar te rewriten? Ik krijg het idee dat je iets wilt als /nieuws/110/2 rewriten naar nieuws.php?a=110&b=2, maar zeker weten doe ik het niet. Kijk in ieder geval even naar een stuk regular expressions, want dat nummer 5 goed gaat is niet zo gek ;)

  • Icelus
  • Registratie: Januari 2004
  • Niet online
G33rt schreef op zondag 24 september 2006 @ 12:11:
Wat probeer je waarnaar te rewriten? Ik krijg het idee dat je iets wilt als /nieuws/110/2 rewriten naar nieuws.php?a=110&b=2, maar zeker weten doe ik het niet. Kijk in ieder geval even naar een stuk regular expressions, want dat nummer 5 goed gaat is niet zo gek ;)
Nummer 5 is inderdaad niet vreemd.
Ik wil dat ‘alles uit de root’ wordt doorgestuurd naar een vast bestand. Velden zijn hierbij gescheiden door komma's.
Dus: /nieuws,110,2 moet naar /test.php?a=$1&b=$2

Waarschijnlijk gebruik ik maar één parameter en laat het script deze op basis van komma's knippen.

Developer Accused Of Unreadable Code Refuses To Comment


  • Icelus
  • Registratie: Januari 2004
  • Niet online
Iemand nog een idee?

Toevoegen van [QSA] aan het eind van de RewriteRule deed het 'm.
Begrijp alleen niet waarom veel voorbeelden op internet die exact hetzelfde zijn niet (direct) werken...

[ Voor 81% gewijzigd door Icelus op 05-10-2006 11:29 ]

Developer Accused Of Unreadable Code Refuses To Comment