Saya perlu mengubah saya .htaccess
dan ada dua baris yang tidak saya mengerti.
RewriteCond %{REQUEST_FILENAME} !-l
RewriteRule ^(.+)$ index.php?url=$1 [QSA,L]
Kapan saya harus menggunakan garis ini?
Saya perlu mengubah saya .htaccess
dan ada dua baris yang tidak saya mengerti.
RewriteCond %{REQUEST_FILENAME} !-l
RewriteRule ^(.+)$ index.php?url=$1 [QSA,L]
Kapan saya harus menggunakan garis ini?
Jawaban:
Bukan tempat untuk memberikan tutorial lengkap, tapi ini dia singkatnya;
RewriteCond pada dasarnya berarti "jalankan RewriteRule berikutnya hanya jika ini benar". The !-l
path adalah kondisi bahwa permintaan tidak untuk link ( !
berarti tidak, -l
menghubungkan berarti)
The RewriteRule pada dasarnya berarti bahwa jika permintaan dilakukan bahwa pertandingan ^(.+)$
(cocok URL apapun kecuali root server), maka akan ditulis ulang sebagai index.php?url=$1
yang berarti permintaan olle
akan ditulis ulang sebagai index.php?url=olle
).
QSA
artinya jika ada string kueri yang diteruskan dengan URL asli, itu akan ditambahkan ke penulisan ulang ( olle?p=1
akan ditulis ulang sebagai index.php?url=olle&p=1
.
L
berarti jika aturannya cocok, jangan proses RewriteRules lagi di bawah ini.
Untuk info lebih lengkapnya ikuti link di atas. Dukungan penulisan ulang bisa agak sulit untuk dipahami, tetapi ada beberapa contoh tentang stackoverflow yang dapat dipelajari.
?
untuk &
, sehingga mustahil untuk membedakan antara /page&foobar
vs /page?foobar
. Bagaimana cara menghentikan QSA untuk mengganti ?
ke &
?
Jika kondisi berikut ini benar, maka tulis ulang URL:
Jika nama file yang diminta bukan direktori,
RewriteCond %{REQUEST_FILENAME} !-d
dan jika nama file yang diminta bukan file biasa yang ada,
RewriteCond %{REQUEST_FILENAME} !-f
dan jika nama file yang diminta bukan tautan simbolis,
RewriteCond %{REQUEST_FILENAME} !-l
lalu tulis ulang URL dengan cara berikut:
Ambil seluruh nama file permintaan dan berikan sebagai nilai parameter kueri "url" ke index.php. Tambahkan string kueri apa pun dari URL asli sebagai parameter kueri lebih lanjut (QSA), dan hentikan pemrosesan file .htaccess (L) ini.
RewriteRule ^(.+)$ index.php?url=$1 [QSA,L]
Contoh lain:
RewriteRule "/pages/(.+)" "/page.php?page=$1" [QSA]
Dengan flag [QSA], permintaan untuk
/ halaman / 123? satu = dua
akan dipetakan ke
/page.php?page=123&one=two