Lompat ke konten Lompat ke sidebar Lompat ke footer

Redirect semua ke index.php menggunakan htaccess php native



Aturan penulisan ulang Anda tampaknya hampir baik-baik saja.

Pertama-tama, pastikan .htaccessfile Anda ada di root dokumen Anda (tempat yang sama dengan index.php) atau itu hanya akan mempengaruhi sub-folder tempatnya berada (dan sub-folder apa pun di dalamnya - secara rekursif).

Selanjutnya buat sedikit perubahan pada aturan Anda sehingga terlihat seperti:

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /index.php?path=$1 [NC,L,QSA]

Saat ini Anda hanya mencocokkan .salah satu contoh karakter apa pun, Anda setidaknya harus .*mencocokkan sejumlah contoh karakter apa pun.

Variabel tersebut $_GET['path']akan berisi struktur direktori palsu, misalnya /mvc/module/test, yang kemudian dapat Anda gunakan di index.php untuk menentukan Pengontrol dan tindakan yang ingin Anda lakukan.


Jika Anda ingin seluruh shebang dipasang di subdirektori, seperti /mvc/atau /framework/cara paling rumit untuk melakukannya adalah dengan mengubah sedikit aturan penulisan ulang untuk memperhitungkannya.

RewriteRule ^(.*)$ /mvc/index.php?path=$1 [NC,L,QSA]

Dan pastikan Anda index.phpberada di folder itu saat .htaccessfile berada di root dokumen.


Alternatif untuk$_GET['path'] (diperbarui Feb '18 dan Jan '19)

Sebenarnya tidak perlu (atau bahkan umum sekarang) untuk menetapkan jalur sebagai $_GETvariabel, banyak kerangka kerja yang akan mengandalkannya $_SERVER['REQUEST_URI']untuk mengambil informasi yang sama - biasanya untuk menentukan Pengendali mana yang akan digunakan - tetapi prinsipnya persis sama.

Ini sedikit menyederhanakan RewriteRulekarena Anda tidak perlu membuat parameter path (yang berarti OP asli sekarang RewriteRule akan berfungsi):

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^.*$ /index.php [L,QSA]

Namun aturan tentang instalasi di subdirektori tetap berlaku, misal

RewriteRule ^.*$ /mvc/index.php [L,QSA]

Bendera:

NC= No Case (tidak peka huruf besar-kecil, tidak terlalu diperlukan karena tidak ada karakter dalam pola)

L= Terakhir (penulisan ulang akan berhenti setelah Penulisan Ulang ini, jadi pastikan ini adalah hal terakhir dalam daftar penulisan ulang Anda)

QSA= Tambah String Kueri, untuk berjaga-jaga jika Anda memiliki sesuatu seperti ini ?like=penguinsdi akhir yang ingin Anda simpan dan teruskan ke index.php.

Posting Komentar untuk "Redirect semua ke index.php menggunakan htaccess php native"