Codeigniter yang selalu 404



Singkat cerita, lagi ga mood bikin cerita.
Masalah : codeigniter yang saya intall hanya bisa menampilkan halaman default, yang di set lewat routes.php walaupun pada config.php sudah di set base_url dan index_page.
Saya ambil contoh halaman default / bawaan codeigniter, dalam kasus ini server yang digunakan adalah:

OS Ubuntu 12.04.2
apache2 2.2.22-1ubuntu1.3
php5 5.3.10-1ubuntu3.6
codeigniter 2.1.3

Diasumsikan alamat server adalah localhost, dan Codeigniter diinstall dalam folder /var/www/codeigniter. Setalah instalasi dan arahkan browser ke folder codeigniter (http://localhost/codeigniter/) maka kita akan menemukan halaman welcome (welcome_message.php) yang di load dari routes.php. Dimana halaman tersebut seharusnya bisa ditampilkan juga dengan mengarahkan URI ke http://localhost/codeigniter/index.php/welcome, namun yang ditampilkan browser adalah 404 alias page not found. Saya pikir ada setting yang salah pada config.php saya, mengikuti rekomendasi dari user guide codeigniter, saya coba mencoba mengubah satu persatu uri_protocol dari nilai default (AUTO) menjadi PATH_INFO, QUERY_STRING, REQUEST_URI, ORIG_PATH_INFO, namun tidak membuahkan hasil. Setelah googling mengenai PATH_INFO, akhirnya saya temukan bahwa si apache yang terinstall ini tidak memiliki settingan tersebut.

Solusinya adalah dengan menambahkan AcceptPathInfo On pada /etc/apache2/sites-available/default, isinya menjadi seperti ini :


<VirtualHost *:80>
ServerAdmin webmaster@localhost

DocumentRoot /var/www
<Directory />
Options FollowSymLinks
AllowOverride None
AcceptPathInfo On
</Directory>
<Directory /var/www/>
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
AcceptPathInfo On
</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
AcceptPathInfo On
</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

    Alias /doc/ "/usr/share/doc/"
    <Directory "/usr/share/doc/">
        Options Indexes MultiViews FollowSymLinks
        AllowOverride None
        Order deny,allow
        Deny from all
        Allow from 127.0.0.0/255.0.0.0 ::1/128
AcceptPathInfo On
    </Directory>

</VirtualHost>

Kemudian restart apache service dengan perintah /etc/init.d/apache2 restart
Selesai :)

Tidak ada komentar:

Posting Komentar

My Lucid Screenshot