Walkermanstudio - Multimediaideas - Logo web

Come rimuovere index.php dagli URL
in CodeIgniter 3 e 4

Pochi, semplici passaggi per rimuovere dalle URL “index.php” dalle web app realizzate in Codeigniter.

Ti sei mai chiesto perché le URL del tuo sito in CodeIgniter mostrano index.php nel mezzo?
Ecco un esempio:

https://iltuosito.it/index.php/blog/articoli

Non è proprio il massimo, vero?
Fortunatamente, possiamo eliminarlo facilmente per ottenere un URL più pulito e professionale:

https://iltuosito.it/blog/articoli

In questa mini guida ti spiegherò, passo dopo passo, come rimuovere index.php dagli URL in CodeIgniter 3 e 4.
Ma perché rimuovere index.php?
Possiamo identificare queste quattro motivazioni:

  • È più professionale e ordinato
  • Aiuta la SEO
  • Evita problemi di routing e link condivisi
  • È una best practice per tutti i progetti web moderni

Rimuovere index.php in CodeIgniter 3

1. Attiva mod_rewrite su Apache
Assicurati che il modulo mod_rewrite sia abilitato. Se stai usando XAMPP/WAMPP o un hosting condiviso, è molto probabile che lo sia già.

2. Crea o modifica il file .htaccess
Nella root del tuo progetto (stessa cartella di index.php), crea un file chiamato .htaccess con questo contenuto:

RewriteEngine On
RewriteBase / # Cambia in /tuacartella/ se sei in una sottocartella
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]

3. Modifica il file di configurazione
Apri il file application/config/config.php e trova questa riga:

$config[‘index_page’] = ‘index.php’;

Sostituiscila con:

$config[‘index_page’] = ”;

Salva, ricarica il browser… et voilà!

Rimuovere index.php in CodeIgniter 4

In CodeIgniter 4 si agisce in maniera simile, ma con qualche differenza dovuta alla nuova struttura.

1. Abilita mod_rewrite (se usi Apache)
Anche qui, il modulo mod_rewrite deve essere attivo.

2. Usa il file .htaccess fornito
CodeIgniter 4 include già un file .htaccess nella cartella public.
Assicurati che il tuo server punti alla cartella public/ come root del sito.

Il file .htaccess dovrebbe contenere già le regole necessarie, ad esempio:


RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([\s\S]*)$ index.php/$1 [L,NC,QSA]

3. Modifica Config\App.php

Apri il file:

app/Config/App.php

Cerca la variabile:

public $indexPage = ‘index.php’;

E sostituiscila così:

public $indexPage = ”;

Salva tutto, cancella la cache se serve, e controlla le tue URL!

Con questi semplici passaggi otterrai URL come:

Prima

https://iltuosito.it/index.php/prodotti/dettaglio/15

Dopo

https://iltuosito.it/prodotti/dettaglio/15

Pulito, professionale, SEO-friendly!

Contenuto per CodeIgniter 3 (root del progetto, dove c’è index.php):


RewriteEngine On
RewriteBase /

# Se il file o la directory esistono, non riscrivere
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

# Reindirizza tutto verso index.php
RewriteRule ^(.*)$ index.php/$1 [L]

Nota: se il tuo progetto è dentro una sottocartella (es: localhost/miosito/), modifica RewriteBase / in RewriteBase /miosito/.

Contenuto per CodeIgniter 4 (cartella public/):


Options -Indexes
RewriteEngine On
RewriteCond %{HTTP:Authorization} .
RewriteRule .* – [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

RewriteRule ^([\s\S]*)$ index.php/$1 [L,NC,QSA]

Scarica il file ZIP contenente i file .htaccess per CodeIgniter 3 e 4.
Contiene:

  • .htaccess_codeigniter3
  • .htaccess_codeigniter4

Puoi rinominarli e usarli nel tuo progetto in base alla versione di CodeIgniter.

Codeigniter 3 e 4: .htaccess rimozione index.php

Se qualcosa non funziona o se vuoi che ci occupiamo noi dell’ottimizzazione del tuo progetto in CodeIgniter (o in qualsiasi altro framework), scrivici!

Letture: 0