2013-05-15 22 views
12

Bu sorunun zaten sorulmakta olduğunu biliyorum, bunları denedim ancak index.php dosyasını url'den kaldıramadım. İşteUBUNTU'daki codeigniter dizininden index.php nasıl kaldırılır

Ubuntu 12.10 
PHP : 5.4.6 
Mod_rewrite in on 
CI verson: 2.1 

bakmak .htacess benim detaylar şöyle: ..

RewriteEngine On 
RewriteBase /projectname 

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)$ index.php/$1 [L] 
Ben de aşağıdaki linke ama hayır şans bakmak

Cannot remove index.php from url CI based site

How to remove "index.php" in codeigniter's path

Benim "/ etc/apache2/sites-available/default "şunun gibi görünüyor:

<VirtualHost *:80> 
    ServerAdmin [email protected] 

    DocumentRoot /var/www 
    <Directory /> 
     Options FollowSymLinks 
     AllowOverride None 
     </Directory> 
    <Directory /var/www/> 
     Options Indexes FollowSymLinks MultiViews 
     AllowOverride All 
     Order allow,deny 
     allow from all 
    </Directory> 

    ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/ 
    <Directory "/usr/lib/cgi-bin"> 
     AllowOverride None 
     Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch 
     Order allow,deny 
     Allow from all 
    </Directory> 

    ErrorLog ${APACHE_LOG_DIR}/error.log 

    # Possible values include: debug, info, notice, warn, error, crit, 
    # alert, emerg. 
    LogLevel warn 

    CustomLog ${APACHE_LOG_DIR}/access.log combined 
</VirtualHost> 

Herhangi bir yardım için teşekkür ederiz! application/config/config.php değişikliklerinde

+0

şey sizin günlükleri? –

+0

Ve '$ config ['uri_protocol']' ayarınız nedir? –

+0

Ve son olarak, hangi hatayı alıyorsunuz? "Nesne Bulunamadı" dan şüpheleniyorum? –

cevap

5

:

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

için:

$config['index_page'] = ''; 

Eğer bir apache yapılandırma dosyası değiştirmek apache yeniden her şey yapmak için iyi bir fikirdir.

sudo /etc/init.d/apache2 reload 

ya:

sudo service apache2 reload 

ya:

sudo /etc/init.d/httpd reload 

(veya ne olursa olsun platformu için eşdeğer komutu) burada benim olan değer ne için

. htaccess

RewriteEngine on 
RewriteBase/
RewriteCond $1 !^(index\.php|static|robots\.txt|favicon\.ico|uploads|googlexxxxxxxx\.html|mobile.html) 
RewriteRule ^(.*)$ index.php/$1 [L] 
+0

evet bunu da güncelledim. –

+0

evet, apache zamanımı yeniden başlattı. kullanım yok. –

+0

, htaccess dosyanızda denemeyi denedi. "RewriteBase/projectname" ifadesini ci ismimin bu klasörün altında değiştiriyorum. –

0

benim .htaccess

RewriteEngine on 

RewriteCond $1 !^(index.php) 

RewriteRule ^(.*)$ index.php/$1 [L] 
+0

Bu denemeyi denemedim –

+0

httpd.conf dosyasını değiştir, AllowOverride Yok -> AllowOverride Tümü – blu

+0

Zaten böyle görünüyor: Askerin kodunda ''. –

46

Adım 1:

Kaldır endeksi:

htaccess dosyası

<IfModule mod_rewrite.c> 
    RewriteEngine On 
    #RewriteBase/

    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteRule^index.php [QSA,L] 
</IfModule> 

Adım 2'de bu ekleyin.CodeIgniter config php

$config['base_url'] = ''; 
$config['index_page'] = ''; 

Adım 3:

Apache Yapılandırma (Komutanlığı) 'de ağır basan htaccess

sudo nano /etc/apache2/apache2.conf 

İzin ve

AllowOverride All 

için dosyayı & değişikliği düzenlemek www klasörü için

Adım 4:

Apache'nin mod yeniden yazma (Komut)

sudo a2enmod rewrite 

Adım 5: şüpheli

başlatma Apache (Komut)

sudo /etc/init.d/apache2 restart 
+1

En iyi çözüm ve bir çekicilik gibi çalıştı .. çok teşekkürler – user2899728

+0

Son olarak! çalışan bir çözüm. Setp '5' basitçe de olabilir:' service apache2 restart' – FireBrand

+1

Evet, bu çözüm Codeigniter 3.x + ubuntu için çalışıyor 16.04 –