SEO friendly URL maken
Ik roep de pagina zo aan:
en hier veschijnt hij:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Gewijzigd op 02/03/2015 14:37:26 door Sander van Viegen
Ikzelf gebruik Multiviews, zodat je een (fake) directory-structuur krijgt, waarna je met $param[1] en hoger de parameters kan ophalen.
Code (php)
Dan heb je dus www.site.nl/page/1
Verder loont het ook om gebruik je maken van slugs
Code (php)
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
function slugify($str) {
$search= array("", "", "", "", "?", "?", "", "", "?", "", "?", "?", "?", "?", "", "?", "?", "", "", "", "?", "", "", "?", "?", "?", "?", "?", "?", "?", "?", "", "", "", "", "?", "?", "", "", "?", "", "?", "?", "?", "?", "", "?", "?", "", "", "", "?", "", "", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "I", "", "", "?", "", "", "?", "?", "?", "?", "?", "?", "?", "?", "?", "", "?", "", "", "", "", "", "?", "", "?", "", "?", "?", "?", "", "", "i", "", "", "?", "?", "?", "?", "?", "?", "?", "?", "?", "", "?", "", "", "", "", "", "?", "", "?", "", "?", "?", "?", "?", "", "?", "?", "?", "", "", "", "", "", "?", "?", "?", "?", "?", "?", "?", "", "?", "", "?", "?", "", "?", "?", "?", "?", "", "?", "", "?", "?", "", "", "", "", "", "?", "?", "?", "?", "?", "?", "?", "", "?", "", "?", "?", "");
$replace = array("A", "A", "A", "A", "A", "A", "A", "A", "A", "AE", "C", "C", "C", "C", "C", "D", "D", "D", "E", "E", "E", "E", "E", "E", "E", "E", "G", "G", "G", "G", "G", "a", "a", "a", "a", "a", "a", "a", "a", "a", "ae", "c", "c", "c", "c", "c", "d", "d", "d", "e", "e", "e", "e", "e", "e", "e", "e", "g", "g", "g", "g", "g", "H", "H", "I", "I", "I", "I", "I", "I", "I", "I", "IJ", "J", "K", "L", "L", "N", "N", "N", "N", "O", "O", "O", "O", "O", "O", "O", "O", "CE", "h", "h", "i", "i", "i", "i", "i", "i", "i", "i", "ij", "j", "k", "l", "l", "n", "n", "n", "n", "o", "o", "o", "o", "o", "o", "o", "o", "o", "R", "R", "S", "S", "S", "S", "T", "T", "T", "U", "U", "U", "U", "U", "U", "U", "U", "U", "U", "W", "Y", "Y", "Y", "Z", "Z", "Z", "r", "r", "s", "s", "s", "s", "B", "t", "t", "b", "u", "u", "u", "u", "u", "u", "u", "u", "u", "u", "w", "y", "y", "y", "z", "z", "z");
$str = str_ireplace($search, $replace, strtolower(trim($str)));
$str = preg_replace('/[^\w\d\-\ ]/', '', $str);
$str = str_replace(' ', '-', $str);
return preg_replace('/\-{2,}', '-', $str);
}
$search= array("", "", "", "", "?", "?", "", "", "?", "", "?", "?", "?", "?", "", "?", "?", "", "", "", "?", "", "", "?", "?", "?", "?", "?", "?", "?", "?", "", "", "", "", "?", "?", "", "", "?", "", "?", "?", "?", "?", "", "?", "?", "", "", "", "?", "", "", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "I", "", "", "?", "", "", "?", "?", "?", "?", "?", "?", "?", "?", "?", "", "?", "", "", "", "", "", "?", "", "?", "", "?", "?", "?", "", "", "i", "", "", "?", "?", "?", "?", "?", "?", "?", "?", "?", "", "?", "", "", "", "", "", "?", "", "?", "", "?", "?", "?", "?", "", "?", "?", "?", "", "", "", "", "", "?", "?", "?", "?", "?", "?", "?", "", "?", "", "?", "?", "", "?", "?", "?", "?", "", "?", "", "?", "?", "", "", "", "", "", "?", "?", "?", "?", "?", "?", "?", "", "?", "", "?", "?", "");
$replace = array("A", "A", "A", "A", "A", "A", "A", "A", "A", "AE", "C", "C", "C", "C", "C", "D", "D", "D", "E", "E", "E", "E", "E", "E", "E", "E", "G", "G", "G", "G", "G", "a", "a", "a", "a", "a", "a", "a", "a", "a", "ae", "c", "c", "c", "c", "c", "d", "d", "d", "e", "e", "e", "e", "e", "e", "e", "e", "g", "g", "g", "g", "g", "H", "H", "I", "I", "I", "I", "I", "I", "I", "I", "IJ", "J", "K", "L", "L", "N", "N", "N", "N", "O", "O", "O", "O", "O", "O", "O", "O", "CE", "h", "h", "i", "i", "i", "i", "i", "i", "i", "i", "ij", "j", "k", "l", "l", "n", "n", "n", "n", "o", "o", "o", "o", "o", "o", "o", "o", "o", "R", "R", "S", "S", "S", "S", "T", "T", "T", "U", "U", "U", "U", "U", "U", "U", "U", "U", "U", "W", "Y", "Y", "Y", "Z", "Z", "Z", "r", "r", "s", "s", "s", "s", "B", "t", "t", "b", "u", "u", "u", "u", "u", "u", "u", "u", "u", "u", "w", "y", "y", "y", "z", "z", "z");
$str = str_ireplace($search, $replace, strtolower(trim($str)));
$str = preg_replace('/[^\w\d\-\ ]/', '', $str);
$str = str_replace(' ', '-', $str);
return preg_replace('/\-{2,}', '-', $str);
}
Zie ook deze code met de verdwenen tekens uit $search, vanwege een bug op deze site:
http://pastebin.com/9twMtuX6
Dan krijg je dus:
www.site.nl/page/1/het-verhaal-van-zipje-en-sopje-op-de-zuidpool
Desgewenst kan je voor betere resultaten er zelfs nog .html achter plakken.
Gewijzigd op 02/03/2015 15:37:45 door - Ariën -
Nu zou je voor elke pagina of onderdeel een aparte rewrite rule kunnen opstellen, maar dat wordt al snel een chaos en is niet erg flexibel (je moet het bestand rechtstreeks editten). Wat je ook kunt doen is alle requests die een niet-bestaande directory of een niet-bestaand script aanspreken (oftewel, die niet rechtstreeks een (standalone) script aanroepen) doorsturen naar de centrale "voordeur": index.php.
In index.php zou je verder kunnen bepalen hoe het oorspronkelijke verzoek afgehandeld moet worden (in zijn simpelste vorm zou dit ook met een switch-statement kunnen). Dit is (ongeveer?) hetzelfde als wat Aar doet. Maar/ook hier heb je volledige vrijheid in de naamgeving, Je moet er natuurlijk wel voor zorgen dat elke pagina een unieke naam heeft.
Een van de vele varianten op dit concept kun je hier vinden. (In mijn site zit dit principe ook ingebouwd en heb ik ook een functie voor het genereren van "slugs").
Gewijzigd op 02/03/2015 15:18:18 door Thomas van den Heuvel
verdiepen in een framework waar het allemaal in zit is een goede investering.