Masalah dengan mod rewrite

Rewrite tidak jalan jika nama skrip sama dengan nama folder (di server Spanel versi lama, cPanel)

Contoh:

RewriteEngine on
RewriteBase /
RewriteRule ^news/(\d+) /news.php?id=$1 [L]

Di server hosting Spanel versi lama (sebelum 26 Agustus 2011) dan server cPanel default, rewrite tersebut tidak berjalan dengan baik karena opsi MultiViews aktif secara default, sehingga /news/123 akan mengeksekusi /news.php, dan URL yang diakses menjadi /news.php/123. Dengan opsi MultiViews aktif, mod_negotiation Apache akan mengarahkan semua nama file/skrip yang tidak diberi akhiran/ekstensi file ke nama file dengan akhiran. Contohnya file index.html dapat diakses dengan /index saja. Ini membuat nyaman, tapi juga membuat rewrite di atas tidak berjalan.

Solusinya adalah (di server Spanel) mengupgrade Spanel (di server Spanel baru, MultiViews tidak aktif secara default), atau (di server cPanel) meminta admin mematikan opsi MultiViews untuk situs Anda. Di server Spanel lama, Anda bisa mematikan mod_negotiation dengan cara mengetik ‘a2dismod negotiation && /etc/init.d/apache2 restart’.

Jika rewrite ingin bekerja selama mod_negotiation aktif, nama file/skrip yang berbeda dengan URL redirek, contohnya:

RewriteRule ^news/(\d+) /_news.php?id=$1 [L]

atau:

RewriteRule ^article/(\d+) /news.php?id=$1 [L]

Rama has written 18 articles