Terug..   naar de 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

 



Tags: htaccess, Codeigniter       01-11-2017



Reacties:

 

    11-02-2018

Goed artikel.
Nu nog toepassen.


Uw reactie

Uw naam.
Uw e-mail
Uw bericht
Beveiliging
Neem deze over aub.

 

Contact:

van Wijhe Web

Frederikastraat 102

7543 CW Enschede

053 - 431 78 76

06 - 511 828 79

Ontvang tips, nieuws en andere interessante feitjes
in je mailbox.

2018 * van Wijhe Web