Dugaan bahwa permalink menjadi penyebab kesalahan semakin kuat jika ternyata semua link-link internal bekerja dengan baik jika setting permalink (Menu Setting >> Permalinks) kita kembalikan ke settingan “Default” (http://www.domainku.com/?p=123). Permasalahan tersebut bisa diatasi dengan beberapa langkah troubleshoot dibawah ini.
Ganti File Permission .httacces menjadi writable
.htaccess merupakan file khusus yang berisi informasi konfigurasi yang harus dijalankan oleh web server untuk direktori dimana file tersebut di tempatkan. Konfigurasi tersebut berlaku hanya untuk direktori tersebut dan semua sub-sub direktori dibawahnya.
Ketika permalink di-set melalui admin (Menu Setting >> Permalinks) adakalanya tidak terjadi perubahan karena settingan yang baru tidak bisa diupdate / ditulis ke file .httaccess di server. Biasanya pesan kesalahan yang muncul adalah :
If your .htaccess file were writable, we could do this automatically, but it isn’t so these are the mod_rewrite rules you should have in your .htaccess file. Click in the field and press CTRL + a to select all.
Oleh sebab itu, sebelum perubahan di update / save maka File Permission .httaccess harus diubah dulu agar writable (777 atau 666).
Mengubah File Permission melalui FTP (Filedzilla) :
Klik Kanan file .htaccess >> File Attributes >> Masukkan 777 pada “Numeric Value”
Mengubah File Permission melalui SSH (putty) :
sudo chmod 777 .htaccess
Jika semua berjalan dengan baik, setelah setting permalink di update pada panel Admin Wordpress maka file .htaccess akan berisi :
Format Rewrite Rule Wordpress ▼
<ifModule mod_rewrite.c>
RewriteEngine On
RewriteBase ...
RewriteCond ...
RewriteRule ...
</ifModule>
Contoh Rewrite Rule untuk Custom Structure %postname% ▼
<ifModule mod_rewrite.c>
RewriteEngine On
RewriteBase /snipcode/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /snipcode/index.php [L]
</ifModule>
Jangan lupa, setelah perubahan di update / save dan permalink telah berjalan dengan baik, kembalikan File Permission .httaccess menjadi 644
Install dan aktifkan modul mod_rewrite.c pada Apache Server
mod_rewrite merupakan modul dari Server Apache yang memungkinkan permalink / fungsi rewrite urls on the fly terjadi atau sering disebut juga sebagai “URL Rewriting Engine“.
sudo a2enmod rewrite
Silahkan periksa apakah modul tersebut sudah ter-install dengan mengecek keberadaan file “rewrite.load”.
ls /etc/apache2/mods-enabled
Load rewrite.so pada php.ini (opsional)
Php.ini merupakan file konfigurasi untuk php interpreter.
Metode ini digunakan jika tidak bisa me-load module “mod_rewrite” dari apache server (misal bagi pengguna shared hosting) tetapi bisa membuat custom php.ini melalui hosting panel.
Silahkan tambahkan “extension=rewrite.so” pada konfigurasi dengan mengedit file tersebut :
vim /etc/php5/apache2/php.ini
Cari di bagian :
;;;;;;;;;;;;;;;;;;;;;;;;;;
; Dynamic Extensions ;
;;;;;;;;;;;;;;;;;;;;;;;;;;
Dan tambahkan menjadi :
;;;;;;;;;;;;;;;;;;;;;;;;;;
; Dynamic Extensions ;
;;;;;;;;;;;;;;;;;;;;;;;;;;
;
;.......
;
; Note that it should be the name of the module only; no directory information
; needs to go here. Specify the location of the extension with the
; extension_dir directive above.
extension=rewrite.so
Setelah perubahan disimpan, jangan lupa untuk restart service.
sudo /etc/init.d/apache2 restart
Untuk meyakinkan apakah modul mod_rewite sudah diload dan aktif bersama PHP, silahkan buat dan jalankan file phpinfo.php berikut.
<html>
<?php phpinfo(); ?>
</html>
Akan terlihat bahwa “mod_rewrite” merupakan salah satu modul yang diload pada box “Apache2 Handler” bagian “Loaded Modules”.
AllowOverRide All
.htaccess sudah writable, modul mod_rewrite sudah di-enable, setting php.ini sudah diubah namun permalink masih tetap tidak jalan. Selidik punya selidik ternyata webserver Apache akan mengabaikan rewrite rules maupun .htaccess-files jika settingan AllowOverRide pada file konfigurasi situs diset “None”.
Silahkan ubah value AllowOverRide tersebut menjadi “All” dengan mengedit file konfigurasi situs :
vim /etc/apache/sites-available/001-situsku
Cari di bagian :
<directory /var/www/situsku/>
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
</directory>
Ubah menjadi :
<directory /var/www/situsku/>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
</directory>
Setelah perubahan disimpan, jangan lupa untuk restart service.
source : http://202.47.72.251/snipcode/2008/12/10/permalink-tidak-jalan-pada-saat-migrasi-wordpress/