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

en https://stackoverflow.com/questions/3050444/when-setting-environment-variables-in-apache-rewriterule-directives-what-causes  ). 

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

 

 

Ook van VanWijhe.Web

Responsiveframework.nl