Toon posts:

[.htaccess] rewriten van homepage gaat niet goed

Pagina: 1
Acties:

Verwijderd

Topicstarter
Dag heren,

Ik ben bezig met een .htaccess bestand en daarin wil ik 2 dingen voor elkaar krijgen.
Omdat ik bezig ben met SEO-vriendelijke url's, wil ik hetvolgende proberen te creeeren:

http://www.example.com/erik -> verwijst naar index.php?paginaid=3&naam=erik
http://www.example.com -> verwijst naar index.php?paginaid=1

Nu heb ik daarvoor devolgende regels in .htaccess bedacht:
code:
1
2
3
4
5
6
7
ErrorDocument 404 /index.php?error=404

# HOMEPAGE
RewriteRule ^$ index.php?paginaid=1 [QSA,L]

# NAMEN
RewriteRule ^([^/]+)?$ index.php?paginaid=3&naam=$1 [QSA,L]


Ik heb ook een 404-error aangemaakt..
Misschien doe ik wel iets helemaal verkeerd, maar wanneer ik nu www.example.com bezoek, dan geeft ie de GET_variabele 'naam' mee, met daarin 'index.php'. En ik heb geen idee waar ie dit vandaan haalt, want de variabele 'paginaid' krijgt wel netjes '1'.

Overigens kom ik nu nooit meer terug op de 404 pagina, want alles wordt opgevangen door de regel onder # NAMEN.. iemand enig idee hoe ik dit beter kan oplossen?

Wanneer ik nu namelijk www.example.com/123/456/789 intyp. krijg ik als variabele:
Array ( [naam] => index.php [paginaid] => 3 [error] => 404 )

Verwijderd

Antwoord op je eerste vraag:

Bezoeker komt op je site: http://www.example.com

Apache herschrijft hem d.m.v. je eerste regel naar http://www.example.com/index.php?paginaid=1

Vervolgens gaat hij weer door je .htaccess (dat doet Apache tot hij geen matches meer vind). En dus triggert je tweede regel. Als je dat invult dan krijg je:

http://www.example.com/in...naam=index.php?paginaid=1

Dit gebeurt er dus :)

Antwoord op je tweede vraag: je tweede regel matched op:
Een string van één of meer keer (door het + teken) van alles wat geen slash is achter elkaar, en dat wel of niet (door het vraagteken).

Oftewel: match op alles.

Ik zou het denk ik dit doen:
Draai je twee regels om qua positie in je .htaccess. Je homepage wordt dan alleen getriggered als er, ook na alle eerdere rewrites, niets achter de url staat.

Voor je tweede probleem moet dat je dat vraagteken weghalen volgens mij :)

  • 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