[mod_rewrite] url herschrijven, lijkt recursief of zo?

Pagina: 1
Acties:

  • kvdveer
  • Registratie: November 2000
  • Laatst online: 06-11-2025
code:
1
2
RewriteEngine On         
RewriteRule ^(.+)          test.php\?p=$1


Als ik de bovenstaande rewriterule in mijn directory /test (op de server pluto.lan) neerzet, krijg ik niet het verwachtte resultaat, de code van test.php is als volgt:
PHP:
1
2
3
<?
echo $_SERVER["QUERY_STRING"];
?>


Als ik nu http://pluto.lan/test/iets opvraag, had ik verwacht dat de querystring p=iets zou zijn, maar in werkelijkheid is dat [i]p=test.php[i]. Dat vind ik buitengewoon vreemd, omdat $1 volgens mij een backref is, en de tekst test.php helemaal niet voorkomt in de match-paterns, (wel in de replacement, maar daar gaat een backref weer niet naar kijken, dacht ik).
het lijkt wel of hij de regel vaker dan eenmaal toepast... :? Wie o Wie weet de oplossing, of een link naar een pagina dit dit gedrag uitlegt... (nee, niet de apache manual, want die heb ik al gelezen)

[ Voor 0% gewijzigd door kvdveer op 07-08-2002 11:34 . Reden: ubb correctoe ]

Localhost, sweet localhost


  • Limhes
  • Registratie: Oktober 2001
  • Laatst online: 19-08 19:06
probeer ipv QUERY_STRING PATH_INFO uit te lezen, moet werken volgens mij

  • kvdveer
  • Registratie: November 2000
  • Laatst online: 06-11-2025
Het gaat niet om het php-script, want dit is alleen maar om te testen. Het gaat er om dat die rewriterule niet doet wat ik wil. (of zit ik nu totaal verkeerd te denken?)

Localhost, sweet localhost


  • kvdveer
  • Registratie: November 2000
  • Laatst online: 06-11-2025
Uit mijn rewrite.log
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
[rid#80e5794/initial] (3) [per-dir /www/test/] strip per-dir prefix: /www/test/w -> w                                        
[rid#80e5794/initial] (3) [per-dir /www/test/] applying pattern '^((.+))' to uri 'w'                                         
[rid#80e5794/initial] (2) [per-dir /www/test/] rewrite w -> test.php?p=w                                                     
[rid#80e5794/initial] (3) split uri=test.php?p=w -> uri=test.php, args=p=w                                                   
[rid#80e5794/initial] (3) [per-dir /www/test/] add per-dir prefix: test.php -> /www/test/test.php                            
[rid#80e5794/initial] (2) [per-dir /www/test/] strip document_root prefix: /www/test/test.php -> /test/test.php              
[rid#80e5794/initial] (1) [per-dir /www/test/] internal redirect with /test/test.php [INTERNAL REDIRECT]                     
[rid#80e91b4/initial/redir#1] (3) [per-dir /www/test/] strip per-dir prefix: /www/test/test.php -> test.php                  
[rid#80e91b4/initial/redir#1] (3) [per-dir /www/test/] applying pattern '^((.+))' to uri 'test.php'                          
[rid#80e91b4/initial/redir#1] (2) [per-dir /www/test/] rewrite test.php -> test.php?p=test.php                               
[rid#80e91b4/initial/redir#1] (3) split uri=test.php?p=test.php -> uri=test.php, args=p=test.php                             
[rid#80e91b4/initial/redir#1] (3) [per-dir /www/test/] add per-dir prefix: test.php -> /www/test/test.php                    
[rid#80e91b4/initial/redir#1] (1) [per-dir /www/test/] initial URL equal rewritten URL: /www/test/test.php [IGNORING REWRITE]

Localhost, sweet localhost


  • kvdveer
  • Registratie: November 2000
  • Laatst online: 06-11-2025
Zie mijn bovenstaande post.

Het lijkt er inderdaad op dat 'ie recursief is, omdat ik 'm naar dezelfde dir stuur...
Wat ik alleen niet had verwacht, dat 'ie ook de argumenten er af sloopt...

Localhost, sweet localhost


  • Limhes
  • Registratie: Oktober 2001
  • Laatst online: 19-08 19:06
owkee... ik heb die rule ook ooit gebruikt en kreeg idd niet de argumenten mee in de QUERY_STRING, maar wel in de PATH_INFO

maar zie ik het nou goed en zegt jouw apache Ignoring Rewrite?

  • kvdveer
  • Registratie: November 2000
  • Laatst online: 06-11-2025
Limhes schreef op 07 augustus 2002 @ 12:32:
owkee... ik heb die rule ook ooit gebruikt en kreeg idd niet de argumenten mee in de QUERY_STRING, maar wel in de PATH_INFO

maar zie ik het nou goed en zegt jouw apache Ignoring Rewrite?
als je iets rewrite naar test.php?testset dan krijg je eea in de query_string...
Dat ignoring rewrite zal wel zijn als omdat 'ie anders oneindig recursief wordt. Ik heb het nu opgelost door verschillende directorys te gebruiken.

Localhost, sweet localhost


  • Limhes
  • Registratie: Oktober 2001
  • Laatst online: 19-08 19:06
Ja dat klopt, had ik over heen gekeken.
Die recursiviteit is er netter uit te halen door alle pagina's behalve test.php?etc te matchen en te redirecten.

  • kvdveer
  • Registratie: November 2000
  • Laatst online: 06-11-2025
Als de redirect inderdaad in dezelfde directory gebleven was had ik die recursiviteit er inderdaad op jou manier uit kunnen halen. Maar het betrof hier gewoon een slechtgekozen test-case, de productievariant moest inderdaad naar een andere directory gaan verwijzen...
iig bedankt voor het meedenken. ;-)

Weer wat geleerd... (8>

[ Voor 0% gewijzigd door kvdveer op 07-08-2002 15:07 . Reden: reformulering ]

Localhost, sweet localhost

Pagina: 1