Redirect semua ke index.php menggunakan htaccess php native
Aturan penulisan ulang Anda tampaknya hampir baik-baik saja.
Pertama-tama, pastikan .htaccess
file 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.php
berada di folder itu saat .htaccess
file 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 $_GET
variabel, 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 RewriteRule
karena 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=penguins
di akhir yang ingin Anda simpan dan teruskan ke index.php.
Posting Komentar untuk "Redirect semua ke index.php menggunakan htaccess php native"