terug naar Techniek CodeIgniter 3
.htaccess
Codeigniter werkt vanuit een file index.php
waarna de de controllers en functies aangeroepen worden.
Als je kijkt naar zo's URL ziet deze er niet vriendelijke uit.
Voorbeeld van onvriendelijke URL
https://www.vanwijhecons.nl/codeigniter/index.php/welcome
Wat je zou willen hebben is het volgende:
Voorbeeld van gewenste URL
https://www.vanwijhecons.nl/codeigniter/welcome
Kan dat?
Ja, dat kan.
We gaan hier gebruik maken van het volgende mechanisme.
.htaccess
De werking ervan is al gepubliceerd in het volgende artikel:
https://vanwijheweb.nl/portaal/sidesteps/wat_is_htaccess_eigenlijk
Eerst het gehele voorbeeld
.htaccess / ht.acl
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]
</IfModule>
<IfModule !mod_rewrite.c>
ErrorDocument 404 /index.php
</IfModule>
Deze file zorgt ervoor dat alle URL invoer ontdaan wordt van de tekst
index.php
maar er wel naar toe wordt gestuurd.
Nu de uitleg per onderdeel
<IfModule mod_rewrite.c>
// Codes
</IfModule>
Deze beide regels zorgen ervoor dat als de module mod_rewirite niet geladen is deze file geen fout melding geeft.
RewriteEngine On
Deze regel zet het mechanisme in werking (bij Apache is dit niet standaard).
RewriteBase /ci213/
Deze regel zorgt ervoor dat het htaccess mechanisme weet waarvanuit hij moet gaan werken.
Standaard wil het rewrite mechanisme vanuit de root van de website werken.
Als het Codeigniter in een sub directorie hebt geplaatst, dien je hier de naam van de sub directorie op te geven.
In dit geval de sub directorie ci213
.
RewriteCond %{REQUEST_FILENAME} !-f
Deze regel zorgt ervoor dat alles wat geen file of bestand is naar index.php gestuurd wordt.
Dit zorgt ervoor dat pagina geladen worden ook al missen er bepaalde zaken.
RewriteCond %{REQUEST_FILENAME} !-d
De regel zorgt ervoor dat er geen url met slashes aan het eind verschijnen.
Hierdoor wordt verkomen dat er meerdere URL komen met gelijke inhoud.
De URL
https://www.vanwijhecons.nl/codeigniter/een_url_link
Is niet gelijk aan de URL
https://www.vanwijhecons.nl/codeigniter/een_url_link/
De laatste regel.
RewriteRule ^(.*)$ index.php/$1 [L]
Deze zorgt ervoor voor de daadwerkelijk uitvoer.
Alles wat het voorgaande hem geeft stuurt hij naar
index.php
file.
Veel programmeer plezier ermee.
Tot ziens,
Ubel Jan van Wijhe
van Wijhe Consultancy
E-mail naarinfo@vanwijheweb.nl