• Storm90
  • Registratie: September 2008
  • Laatst online: 17-01 15:13
Goedenavond,

Ik ben bezig met een webpagina waarin ik gebruik maak van htaccess. Een functie die htaccess heeft is 'RewriteRule'. Dit houd (zoals de meeste wel weten) in dat hij het normale pad:
dus bv. www.test.nl/profiel.php verandert in bv. www.test.nl/profiel/

Hierdoor krijg ik het volgende probleem, namelijk dat ik er geen code achter kan plaatsen, bv.
www.test.nl/profiel/?naam=10009

Dan wil hij dit niet pakken, ik heb het getest zonder htaccess en dan wil het wel lukken. Ik kan heel gemakkelijk htaccess negeren, maar ik heb al heel mijn site erop gebasseerd dat het teveel tijd gaat kosten om alles weer aan te passen. Iemand een idee hoe ik dit kan oplossen?

Met vriendelijke groeten,

Erik

  • gertvdijk
  • Registratie: November 2003
  • Nu online
Documentatie van Apache lezen. Er is een RewriteRule optie QSA (Query String Append). Doet precies wat het zegt.
'qsappend|QSA' (query string append)
This flag forces the rewrite engine to append a query string part of the substitution string to the existing string, instead of replacing it. Use this when you want to add more data to the query string via a rewrite rule.

[ Voor 62% gewijzigd door gertvdijk op 12-01-2009 23:39 ]

Kia e-Niro 2021 64kWh DynamicPlusLine. 3x Victron MP-II op 15kWh US5000 3f thuisbatterij met 3x25A→3x40A PowerAssist, Victron EVCS, 3200Wp HoyMiles zp. my GitHub, my blog


  • Noork
  • Registratie: Juni 2001
  • Niet online
Wellicht kun je eenzelfde rewrite gebruiken als op Got: http://www.testsite.nl/profiel/10009

Valt vast wel in de mod_rewrite handleiding te vinden hoe zoiets moet.

  • crisp
  • Registratie: Februari 2000
  • Laatst online: 15:30

crisp

Devver

Pixelated

Noork schreef op maandag 12 januari 2009 @ 23:38:
Wellicht kun je eenzelfde rewrite gebruiken als op Got: http://www.testsite.nl/profiel/10009

Valt vast wel in de mod_rewrite handleiding te vinden hoe zoiets moet.
Wij gebruiken geen rewrites maar multiviews ;)

Intentionally left blank


  • Storm90
  • Registratie: September 2008
  • Laatst online: 17-01 15:13
Hartstikke bedankt!

Ik heb de regel in .htaccess verandert:
RewriteRule ^profiel/?$ index.php?p=profiel [L,QSA]

werkt perfect :D

  • WouZz
  • Registratie: Mei 2000
  • Niet online

WouZz

Elvis is alive!

crisp schreef op maandag 12 januari 2009 @ 23:41:
[...]

Wij gebruiken geen rewrites maar multiviews ;)
En wat is het grote voordeel daarvan? Performance?

On track


  • DukeBox
  • Registratie: April 2000
  • Laatst online: 11:00
^ Ik denk dat het vooral handig is als je ooit op een andere taal overstapt. .php is dan niet handig in de url als er (uit history) veel wordt gehotlinkt.

[ Voor 59% gewijzigd door DukeBox op 13-01-2009 22:37 ]


  • HendrikN
  • Registratie: Februari 2007
  • Laatst online: 05-02 21:58
Storm90 schreef op maandag 12 januari 2009 @ 23:46:
Hartstikke bedankt!

Ik heb de regel in .htaccess verandert:
RewriteRule ^profiel/?$ index.php?p=profiel [L,QSA]

werkt perfect :D
Mis ik iets? Want hoe krijg je nu die naam door als GET variabele in je PHP?

Nevermind, zie het al :+

ben geen held met rewrites ;)

[ Voor 14% gewijzigd door HendrikN op 13-01-2009 22:43 ]


  • Martine
  • Registratie: Mei 2002
  • Niet online
Misschien kun je dit gebruiken... ;)

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
$url = explode("&", $_SERVER["QUERY_STRING"]);
$val = explode("/", addslashes(strtolower($url[0])));

// lege $val[?] verwijderen
for ($q=0;$q<count($val);$q++) {
    if (empty($val[$q]) && $val[$q] != '0')
        unset($val[$q]);
}

// voor als hij leeg of 0 is
if (empty($val[0]))
    $val[0] = 1;

// nummering in orde maken
$val = array_values($val);


code:
1
2
3
4
5
6
RewriteEngine on

RewriteCond %{SCRIPT_FILENAME} !-f
RewriteCond %{SCRIPT_FILENAME} !-d

RewriteRule ^(.*)$ index.php?$1 [L,QSA]

  • MueR
  • Registratie: Januari 2004
  • Laatst online: 15:43

MueR

Admin Devschuur® & Discord

is niet lief

Ik denk niet dat hij daar veel aan heeft. Je bent namelijk complete key/value pairs in een array aan het dumpen. Die explode op "/" gaat helemaal niks doen, tenzij je toevallig een forward slash in je query string hebt staan, wat vrij zelden is.

Daarnaast is het gemakkelijker om foreach of zelfs array_map te gebruiken als je toch alle values in de array wil checken.

Anyone who gets in between me and my morning coffee should be insecure.


  • Patriot
  • Registratie: December 2004
  • Laatst online: 06-02 16:45

Patriot

Fulltime #whatpulsert

MueR schreef op woensdag 14 januari 2009 @ 08:32:
Ik denk niet dat hij daar veel aan heeft. Je bent namelijk complete key/value pairs in een array aan het dumpen. Die explode op "/" gaat helemaal niks doen, tenzij je toevallig een forward slash in je query string hebt staan, wat vrij zelden is.
Nee, het idee is dat je een url zo aanroept: http://site/foo/bar/boop/beep en hij dat naar dit rewrite: http://site/index.php?/foo/bar/boop/beep. Filenames/directories kunnen nog wel direct aangeroepen worden.

Het stukje PHP dat hij geeft vind ik overigens wel een beetje dubieus. Waar de explode op de ampersand voor nodig is zie ik niet helemaal, en de controle of het eerste element van de array niet leeg is zorgt ervoor dat de eerste variabele in de url nooit 0 kan zijn (iets waar hij in de foreach wel op let).

edit: niet dat controleren op de string nul netjes is

[ Voor 3% gewijzigd door Patriot op 14-01-2009 09:41 ]


  • MueR
  • Registratie: Januari 2004
  • Laatst online: 15:43

MueR

Admin Devschuur® & Discord

is niet lief

In dat geval kan je beter multiviews aanzetten en vervolgens $_SERVER['REQUEST_URI'] parsen.

Anyone who gets in between me and my morning coffee should be insecure.


  • Erkens
  • Registratie: December 2001
  • Niet online

Erkens

Fotograaf

MueR schreef op woensdag 14 januari 2009 @ 10:02:
In dat geval kan je beter multiviews aanzetten en vervolgens $_SERVER['REQUEST_URI'] parsen.
Ik zou dan eerder met $_SERVER['PATH_INFO'] aan de slag gaan ;)

  • MueR
  • Registratie: Januari 2004
  • Laatst online: 15:43

MueR

Admin Devschuur® & Discord

is niet lief

Om het even welk, zolang je maar niet met rewrites gaat lopen klieren via GET parameters :P

edit:
Overigens is PATH_INFO volgens de manual niet beschikbaar in server en ik zie hem ook niet terug in phpinfo() ;)

[ Voor 53% gewijzigd door MueR op 14-01-2009 10:29 ]

Anyone who gets in between me and my morning coffee should be insecure.


  • Erkens
  • Registratie: December 2001
  • Niet online

Erkens

Fotograaf

MueR schreef op woensdag 14 januari 2009 @ 10:25:
Om het even welk, zolang je maar niet met rewrites gaat lopen klieren via GET parameters :P

edit:
Overigens is PATH_INFO volgens de manual niet beschikbaar in server en ik zie hem ook niet terug in phpinfo() ;)
PATH_INFO is beschikbaar indien je dus ook daadwerkelijk daar gebruik van maakt natuurlijk ;)
Verder is PATH_INFO handiger omdat deze ook alleen de extra info geeft, daar waar REQUEST_URI ook de naam van het aangeroepen script bevat in de vorm zoals de user hem gaf:

http://localhost/scriptnaam.php/extra/info
geeft:
REQUEST_URI: /scriptnaam.php/extra/info
PATH_INFO: /extra/info

http://localhost/scriptnaam/extra/info
geeft:
REQUEST_URI: /scriptnaam/extra/info
PATH_INFO: /extra/info

  • wackmaniac
  • Registratie: Februari 2004
  • Laatst online: 03-02 11:16
MueR schreef op woensdag 14 januari 2009 @ 10:25:
Om het even welk, zolang je maar niet met rewrites gaat lopen klieren via GET parameters :P

edit:
Overigens is PATH_INFO volgens de manual niet beschikbaar in server en ik zie hem ook niet terug in phpinfo() ;)
Waarom niet? Dat kan nog wel eens wat werk / problemen schelen als je niet in de root van je domein zit ( www.domain.nl), maar bijvoorbeeld in de map blog (www.domein.nl/blog). Je bent dan iig wat flexibeler, omdat je er geen rekening mee hoeft te houden.

Beetje zoals Erkens vertelt denk ik :)

[ Voor 3% gewijzigd door wackmaniac op 14-01-2009 11:44 ]

Read the code, write the code, be the code!


  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij

Pagina: 1