Codeigniter Index.php Uzantisini Kaldirmak

1 minute read

Bu postta ilk Codeigniter projemde karsilastigim bir problemi paylasmak istiyorum.

Hem PHP’ye hem Codeigniter’in yapisina cok hakim olmadigim icin neden kaynaklandigini ayrintisiyla bilmesem de development ortaminda gelistirme yaparken Controllerlara ait URL’lere erisebilmek icin controller isminden once index.php yazmam gerekiyordu.

Ornegin /cars seklinde arabalarimi listeleyen bir endpointim olsun. Normalde bu endpoint’e localhost/cars seklinde erismem gerekirken localhost/index.php/cars seklinde erisebiliyordum.

Tabii projeyi canliya aldigimda index.php uzantisinin ortadan kalkmasi icab ediyordu. Arastirdigimda cozumun gayet basit oldugunu gordum.

  • Ilk olarak ana dizinde (yani application klasorunun oldugu dizinde) .htaccess dosyasini olusturuyoruz (Onceden zaten varolabilir.) ve asagidakileri icine yapistiriyoruz;
RewriteEngine on

RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

RewriteCond $1 !^(index\.php|resources|robots\.txt|public)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?/$1 [QSA,L]
  • Ardindan application/config/config.php dosyasini acip asagidaki satiri gosterildigi gibi degistiriyoruz;

Oncesi:

$config['index_page'] = 'index.php';

Sureyya hanimin muhtesem degisimi:

$config['index_page'] = ''; // <-- index.php'yi sildik.

Evet, gordugunuz gibi yaptigimiz tek sey ‘index.php’ ifadesini bos stringe cevirmek oldu.

Sorunun cozumunde yardim aldigim stackoverflow sorusunu da asagiya kaynak olarak birakiyorum. Herkese huzur dileyerek postu burada bitiriyorum.

EKLEME EDITI:

Projeyi canlıya aldığımda SSL ve index.php yönlendirmeleri dışında, tarayıcının example.com ve www.example.com adreslerini farklı adresler saymasından kaynaklı CORS hatasıyla karşılaştım. Bu hatadan dolayı bazı assetler yüklenmedi. Bunu aşmak için konfigürasyon dosyasını aşağıdaki gibi değiştirmem gerekti;

RewriteEngine on

RewriteCond %{HTTPS} off
RewriteRule (.*) https://www.example.com%{REQUEST_URI} [R=301,L]

RewriteCond $1 !^(index\.php|resources|robots\.txt|public)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?/$1 [QSA,L]

Burada www.example.com olarak yazan kısmı kendi domain isminizle değiştirmelisiniz.

Kaynak:

https://stackoverflow.com/questions/15481035/removing-index-php-in-codeigniter-using-htaccess-file/17941534

Leave a comment