[PHP] google vriendelijke urls, hoe?

Pagina: 1
Acties:
  • 864 views

Acties:
  • 0 Henk 'm!

  • NEOeo
  • Registratie: December 2003
  • Laatst online: 23-09 11:46
In een CMS zoals Joomla zit een optie als 'Zoekmachinevriendelijke URLs'. Dit houd in dat er niet meer een ingewikkelde link staat als 'index.php?option=com_content&view=article&id=14&Itemid=52' etc., maar een mooie schone link als 'bladibla.nl/paginanaam/'.

Ik hoop dat jullie snappen wat ik bedoel, want ik vind het een beetje moeilijk uit te leggen.

Nu is mijn vraag het volgende:
Ik heb een eigen cms gemaakt waarbij de urls er ongeveer zo uitzien: 'site.nl/index.php?id=1'.
Hoe maak ik deze urls 'schoon' als bijvoorbeeld 'site.nl/home/'?

alvast bedankt!

Acties:
  • 0 Henk 'm!

  • MAX3400
  • Registratie: Mei 2003
  • Laatst online: 22-09 12:35

MAX3400

XBL: OctagonQontrol

Sorry, maar Joomla heeft daar een hele mooie subsite voor... En een fantastisch forum.

Ga maar eens zoeken op "url rewrite" of "sf404sef"

Ongetwijfeld dat de uitleg van deze componenten mogelijk ook van toepassing is op jouw webserver/CMS...

[ Voor 27% gewijzigd door MAX3400 op 02-02-2009 18:00 ]

Mijn advertenties!!! | Mijn antwoorden zijn vaak niet snowflake-proof


Acties:
  • 0 Henk 'm!

  • gertvdijk
  • Registratie: November 2003
  • Laatst online: 22-09 12:32
Configureer je webserver dat ie de URLs rewrite. Dit gaat normaal gesproken met regular expressions. Voorbeeld voor Apache:
code:
1
2
RewriteEngine on
RewriteRule ^(forum|topic|profile|mail)-([0-9]+)\.html?[\.,;\-]?$ $1.php?id=$2

Zie ook de documentatie rond mod_rewrite (in geval van Apache als webserver).

Kia e-Niro 2021 64 kWh DynamicPlusLine. See my GitHub and my blog for articles on security and other stuff.


Acties:
  • 0 Henk 'm!

  • NEOeo
  • Registratie: December 2003
  • Laatst online: 23-09 11:46
Bedankt!
Ik had echt geen idee waar ik naar moest zoeken.

Acties:
  • 0 Henk 'm!

  • PowerSp00n
  • Registratie: Februari 2002
  • Laatst online: 19-08 08:24

PowerSp00n

There is no spoon

Je kan met PHP ook _SERVER["PATH_INFO"] parsen.

Acties:
  • 0 Henk 'm!

Verwijderd

gertvdijk schreef op maandag 02 februari 2009 @ 18:02:
Configureer je webserver dat ie de URLs rewrite. Dit gaat normaal gesproken met regular expressions. Voorbeeld voor Apache:
code:
1
2
RewriteEngine on
RewriteRule ^(forum|topic|profile|mail)-([0-9]+)\.html?[\.,;\-]?$ $1.php?id=$2

Zie ook de documentatie rond mod_rewrite (in geval van Apache als webserver).
Dit is wel een van de betere manier inderdaad in plaats van 100 van deze rules onder elkaar die eigenlijk hetzelfde doen maar dan voor een ander woord :)

Acties:
  • 0 Henk 'm!

  • 2playgames
  • Registratie: Februari 2005
  • Laatst online: 01-06 15:19
Een veel gebruikte en ook (naar mijn mening) de netste manier is om met 1 RewriteRule alle requests naar 1 index.php door te sturen.

code:
1
2
3
4
5
6
7
8
9
RewriteEngine On

# verwijs alles door
# behalve als de opgevraagde URL
# naar een echt bestand wijst
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ /index.php [NC,L]


In index.php lees je vervolgens de gevraagde pagina uit $_SERVER['REQUEST_URI']. Deze kun je naar eigen smaak implementeren. Een mogelijk optie is dat bij het opvragen van "/foo/bar" de methode "barAction" van een klasse "FooController" wordt aangeroepen.

[ Voor 5% gewijzigd door 2playgames op 02-02-2009 19:47 ]


Acties:
  • 0 Henk 'm!

Verwijderd

2playgames schreef op maandag 02 februari 2009 @ 19:46:
Een veel gebruikte en ook (naar mijn mening) de netste manier is om met 1 RewriteRule alle requests naar 1 index.php door te sturen.
Daar ben ik het compleet mee eens. Je applicatie moet in staat zijn de URL's te genereren. Dan is het ook niet zo vreemd als er ook URL's geinterpreteerd moeten worden.

Acties:
  • 0 Henk 'm!

  • Raynman
  • Registratie: Augustus 2004
  • Nu online
NEOeo schreef op maandag 02 februari 2009 @ 18:07:
Bedankt!
Ik had echt geen idee waar ik naar moest zoeken.
offtopic:
Dat vind ik toch wat moeilijk te geloven. Zelfs [google=google vriendelijke urls] (je topictitel) geeft al een paar blog- of forumposts waarin mod rewrite e.d. genoemd worden.

[ Voor 4% gewijzigd door Raynman op 02-02-2009 21:39 ]


Acties:
  • 0 Henk 'm!

  • curry684
  • Registratie: Juni 2000
  • Laatst online: 06-09 00:37

curry684

left part of the evil twins

Raynman schreef op maandag 02 februari 2009 @ 21:36:
[...]
offtopic:
Dat vind ik toch wat moeilijk te geloven. Zelfs [google=google vriendelijke urls] (je topictitel) geeft al een paar blog- of forumposts waarin mod rewrite e.d. genoemd worden.
offtopic:
Het staat zelfs in de PHP Programming FAQ in dit subforum.

Professionele website nodig?


Acties:
  • 0 Henk 'm!

Verwijderd

2playgames schreef op maandag 02 februari 2009 @ 19:46:
Een veel gebruikte en ook (naar mijn mening) de netste manier is om met 1 RewriteRule alle requests naar 1 index.php door te sturen.

code:
1
2
3
4
5
6
7
8
9
RewriteEngine On

# verwijs alles door
# behalve als de opgevraagde URL
# naar een echt bestand wijst
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ /index.php [NC,L]


In index.php lees je vervolgens de gevraagde pagina uit $_SERVER['REQUEST_URI']. Deze kun je naar eigen smaak implementeren. Een mogelijk optie is dat bij het opvragen van "/foo/bar" de methode "barAction" van een klasse "FooController" wordt aangeroepen.
Ik gebruik dit ook, maar volgens mij zit je nog steeds aan normale rewrite rules vast hoor.

Acties:
  • 0 Henk 'm!

  • compufreak88
  • Registratie: November 2001
  • Laatst online: 02-05 17:51
Verwijderd schreef op maandag 02 februari 2009 @ 21:41:
[...]


Ik gebruik dit ook, maar volgens mij zit je nog steeds aan normale rewrite rules vast hoor.
Waarom? Alle requests kunnen worden doorgestuurd naar 1 bestand. Die bepaald dan uiteindelijk wat er gebeurt. Je kunt zelfs instellen dat als het bestand wel bestaat, dat hij dan gewoon dat bestand laadt.

Acties:
  • 0 Henk 'm!

  • curry684
  • Registratie: Juni 2000
  • Laatst online: 06-09 00:37

curry684

left part of the evil twins

Let er bij die aanpak (die idd de machtigste en flexibelste is) wel op dat je goed met alle vormen van URL's omgaat - dus ook bijv. met GET-parameters die je in de URI alsnog los gaat aantreffen.

Professionele website nodig?


Acties:
  • 0 Henk 'm!

  • 2playgames
  • Registratie: Februari 2005
  • Laatst online: 01-06 15:19
PHP:
1
2
3
<?php
$uri = $_SERVER['REQUEST_URI'];
$uri = substr($uri, 0, strpos('?', $uri));


simpel gezegd dan. je moet wel kijken of strpos geen false geeft

Acties:
  • 0 Henk 'm!

  • WouZz
  • Registratie: Mei 2000
  • Niet online

WouZz

Elvis is alive!

2playgames schreef op dinsdag 03 februari 2009 @ 00:00:
PHP:
1
2
3
<?php
$uri = $_SERVER['REQUEST_URI'];
$uri = substr($uri, 0, strpos('?', $uri));


simpel gezegd dan. je moet wel kijken of strpos geen false geeft
Check parse_url. Zit je helemaal safe.

On track


Acties:
  • 0 Henk 'm!

Verwijderd

compufreak88 schreef op maandag 02 februari 2009 @ 21:44:
[...]


Waarom? Alle requests kunnen worden doorgestuurd naar 1 bestand. Die bepaald dan uiteindelijk wat er gebeurt. Je kunt zelfs instellen dat als het bestand wel bestaat, dat hij dan gewoon dat bestand laadt.
Jij gaat er dus vanuit dat alles in de root van de webdir staat ?

Dat lijkt me niet handig.

Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Dit staat zoals Curry hierboven al zegt letterlijk in onze FAQ, ondanks dat het serverconfiguratie betreft en geen programmeerissue is. We gaan er hier wel van uit dat je op zijn minst de relevante FAQ's erop naleest. (PHP is in deze eigenlijk amper tot niet relevant maar je kiest het in je topictitel en de FAQ die je zoekt staat ook gewoon onder PHP. ;) ) Daarnaast is het ook al heel vaak voorbij gekomen hier, dus ik kan me niet voorstellen dat je hier niets over hebt kunnen vinden.

Kortom: op slot dus, wegens gebrek aan eigen inzet. :)

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.

Pagina: 1

Dit topic is gesloten.