28 april 2017
Dutch CMS
Handleidingen

Met Dutch CMS 2.0

Nog makkelijker een mooie website !
Gemoderniseerd template design
Achtergrondafbeeldingen invoegen
Uitgebreid Contactformulier !
En meer.....

 
 
 
 
 
Technische Handleidingen URL-Rewriting in Dutch CMS 10 februari 2009

Dutch CMS maakt gebruik van URL-rewriting via .htaccess regels. Hiermee krijg je een volledig schoon en kort website adres zonder cryptische verwijzingen. Dit staat niet alleen mooier maar het geeft ook kans op een betere indexering door zoekmachines van je website en kans op een betere ranking in de zoekresultaten. Hiermee is Dutch CMS een zeer SEO vriendelijk CMS.

Dit is een technische handleiding die dieper ingaat op de technieken gebruikt in Dutch CMS. Zoek je eenvoudige uitleg kijk dan bij de gebruikershandleidingen hierboven !
Kom je via Google op deze pagina en zocht je informatie over URL-rewriting in PHP dan heb je ook zeker wat aan dit artikel.

Introductie

Via zowel Drupal als Wiki (wat ook een CMS systeem is) kwam ik erachter dat het toch mogelijk is om van Schone URL's gebruik te maken zonder gebruik te maken van zogenoemde .htaccess bestanden waarin je rewrite regels kunt zetten. Een schone url houdt in http://websiteadres/nogwat/nogwat. In php gaan adressen er nogal snel cryptisch uitzien zoals index.php?page=nogwat&id=id en soms nog vele langere adressen.

Zoekmachines en de schoonheid van je adres

Nu wordt er gezegd dat zoekmachines hier niet zo van gecharmeerd zijn en als ze je website indexeren je site niet volledig indexeren maar alleen oppervlakkig en dat sommige zoekspiders al zouden stoppen zodra ze een ? tegenkomen in het adres. Nu is het wel zo dat de spider technologie sterk verbeterd is en ook geprogrammeerd worden om met php adressen rekening te houden maar het argument blijft dat de adresregels er niet altijd mooier op worden, zeker niet als er nog meer variabelen in de adresregel worden meegegeven zoals bijvoorbeeld de taal en de karakter set (bijvoorbeeld utf8). Soms kom je inderdaad wel de meest belachelijk lange adressen tegen zoals bv:

http://www.content.nl/176090/Default.aspx?showtarget=176093&showobject=226014&source=%2f176031%2fDefault.aspx%3fjustfilter%3dtrue%26filter%3d%26sortby176105%3dDateTimeCreated%26qpos176105%3d390

URL-rewriting via .htaccess

Nu is er in PHP een mooi manieren om dit op te lossen doormiddel van een .htaccess bestand waar rewrite regels instaan. Een verkort adres wordt dan intern herschreven naar weer index.php?enz zodat het adres toch verder verwerkt kan worden en de juiste informatie op je scherm getoond wordt. Technisch gezien zijn het interpretatie regels. Je verteld in zo'n bestandje hoe het adres geinterpreteerd moet worden en wat ieder stukje van het adres betekend na iedere / en hoe het verder verwerkt moet worden. Je kunt dan weer gewoon gebruikmaken van het adres:
http://websitenaam.provider.nl/nogwat/id
Op deze manier zie je zelfs aan het adres geen eens dat de website draait op PHP. Intern wordt dan dit adres vertaald naar:
http://websitenaam.provider.nl?page=nogwat&id=id en wordt nogwat opgehaald uit de database en op het scherm getoond. Nogwat kan dan bijvoorbeeld zijn dat het om een artikel gaat of om een weblogpagina. Dus bijvoorbeeld: kijk in de database in de weblog tabel en haal de pagina op met betreffend id nummer.

Op die manier kun je dus toch gebruik maken van "schone url's" zoals dat genoemd wordt en toch van alle voordelen van PHP genieten. Een informatieve links over URL Rewriting via .htaccess vindt je hier.

Schone korte adressen in Dutch CMS

Nu komt het probleem dat sommige providers het gebruik van .htaccess bestanden vanwege veiligheidsoverwegingen en server belasting NIET toestaan. Gevolg... je zit toch weer met die code achtige php adressen ! Zoals ik al zei kwam ik erachter via het gebruik van Drupal en Wiki dat het toch mogelijk was om van schone adressen gebruik te maken. Alleen zag ik dat het adres wel ietsje langer werd dan bij een volledige rewrite doordat wel verplicht / ertussen moet komen. Toch vond ik dit een mooie oplossingen en vroeg me af hoe dit precies werkte.

Na wat Googelen (met de zoekopdracht url rewriting zonder .htaccess) vond ik de volgende pagina's die uitlegden hoe dit werkte:
http://php.n3rd.nl/docs/URL_rewrite_zonder_mod_rewrite.pdf
http://www.phphulp.nl/php/tutorials/8/629/

Met de PHP functie explode knip je het adres op in stukjes en ieder stukje geeft dezelfde informatie als dat je index.php?enz zou gebruiken. Stel dat je dus het volgende adres zou hebben:
http://websitenaam.provider.nl?page=nogwat&id=id
Een volledige rewrite zou er zo uitzien:
http://websitenaam.provider.nl/page/id
En met de tussenoplossing wordt het:
http://websitenaam.provider.nl/page/id
Nog altijd veel mooier en netter dus dan het eerste adres.

Een voorbeeld met een wat langer adres. Stel je hebt een volkstuinwebsite die je onderverdeeld hebt in een gedeelte over groente en een gedeelte over sierbloemen. Een adres van een artikel zou dan kunnen zijn:
http://websitenaam.provider.nl?site=groente&soort=artikels&pagina=sla
Dit wordt nu dus (ook in Dutch CMS):
http://websitenaam.provider.nl/groente/artikels/sla

Dutch CMS maakt dus ook gebruik van deze techniek. Via allerlei ingewikkelde if en else wordt uiteindelijk bepaald dat het om de groente website gaat en dat er naar een artikel gezocht moet worden en dat het om de pagina sla gaat. Wil je dit in de praktijk zien klik dan gewoon door deze website en kijk naar het adres in de adresbalk.
Ben je echt geinteresserd in de technische PHP code kijk dan na downloaden van Dutch CMS in het bestand urlpaden.php in de map phpscripts > indexbestanden bij codeblok 1 en codeblok 2. Er wordt bepaald of je je op de hoofdsite bevindt of op een Thema site. Vervolgens wordt er gekeken of als de hoofd of Thema site een multilevel site is op welk level je je bevindt en vervolgens wordt gekeken of je je op een normalepagina, weblog, woordenboek, link, faq of forum onderdeel bevindt en vervolgens op welke pagina je je in dat onderdeel bevindt.

Vanaf Dutch CMS versie 1.8

Vanaf Dutch CMS versie 1.8 is deze code nog meer verbeterd en kan er in samenwerking met een met het CMS meegeleverd .htaccess bestand gekomen worden tot een volledige URL rewrite ! Met andere woorden: index.php verdwijnt volledig uit de adresregel en je hebt dus een volledig schoon en zo kort mogelijk website adres. Mag je dus gebruikt maken van .htaccess bestanden van je hostingprovider kopieer dan het met Dutch CMS meegeleverde .htaccess bestand in je website directory (de map waar ook je PHP bestanden en Dutch CMS mappen etc in staan) en zet in het bestand cmskern.php (in de map phpscripts) urlrewite op 1.

De code in dit bestand is als volgt:

RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]

Kort gezegd komt het er op neer: "als het verzoek na je domeinnaam niet een bestaande directory of bestand is verwijs het verzoek dan door naar het bestand index.php".

Een mooie url is vooral een kwestie van smaak en schoonheid,
maar Dutch CMS doet het wat dat betreft behoorlijk goed !

Powered by Dutch CMS v2.0 XHTML Strict

Bezoek ook de Webdesign website van Dutch CMS