CodeigniterEen solide basis

.htaccess voor Codeigniter 3

 

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://www.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