terug naar blogs
Aangepaste .htaccess voor Codeigniter 3
Om de index.php uit de URL te halen, wordt er al tijden gebruik gemaakt van .htaccess
Dit bestand zorgt ervoor dat http://www.website.nl/index.php/begin wordt vertaald als http://www.website.nl/begin .
Tevens heeft dit bestand de mogelijkheid om een variabele door te geven aan de super variabale $_SERVER.
Om zo Codeigniter te vertellen in welke omgeving deze moet werken. (productie, test of ontwikkel omgeving)
Alleen werkt dit soms niet als bedoeld.
De uitleg van de file.
Allereerst het gebruikelijke .htaccess
bestand.
(Bij beide scripts dient u uwWebsite te vervangen met de naam van uw domein.)
<IfModule mod_setenvif.c>
SetEnvIf Host uwWebsite.nl$ CI_ENV=production
</IfModule>
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTP_HOST} ^www\.uwWebsite\.nl [NC]
RewriteRule ^(.*)$ https://uwWebsite.nl/$1 [L,R=301]
RewriteCond $1 !^(index\.php|afb|system|robots\.txt)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L,QSA]
</IfModule>
Je zou verwachten dat de constante "CI_ENV" in de super variabele "$_SERVER['CI_ENV']" terecht zou komen.
Dat hoeft dus niet zo te zijn.
In plaats hiervan kan de constante "REDIRECT_CI_ENV" verschijnen.
( Voor meer uitleg zie https://forum.codeigniter.com/archive/index.php?thread-63387.html
Niet altijd, maar het kan. Je merkt het als de website ineens de configuratie bestanden niet meer kan vinden.
Nu kun je de index.php van Codeigniter aanpassen, maar wat als er een nieuwe versie hiervan verschijnt met aanpassingen in index.php. Niet handig dus. Beter is het om in de .htaccess bestand deze aanpassingen al te doen.
<IfModule mod_setenvif.c>
SetEnvIf Host uwWebsite.nl$ CI_ENV=production
</IfModule>
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{ENV:REDIRECT_VAR} !^$
RewriteRule .* - [E=VAR:%{ENV:REDIRECT_VAR}]
RewriteCond %{HTTP_HOST} ^www\.uwWebsite\.nl [NC]
RewriteRule ^(.*)$ https://uwWebsite.nl/$1 [L,R=301]
RewriteCond $1 !^(index\.php|afb|system|robots\.txt)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L,QSA]
</IfModule>
Het gaat om de regels
RewriteCond %{ENV:REDIRECT_VAR} !^$
RewriteRule .* - [E=VAR:%{ENV:REDIRECT_VAR}]
Deze vervangen alle constanten met REDIRECT_ erin het gedeelte met REDIRECT_ met niets.
Deze aanpassing werkt overal, waardoor het als een standaard te gebruiken is.
Hoe te gebruiken?
Plaats het bestand in dezelfde directoy als index.php.
pas wel de naam van uw domein aan.
Download link
Klik hier om de scripts te downloaden