Saya memiliki 8 baris aturan penulisan ulang dalam file .htaccess saya. Saya perlu mengecualikan dua direktori fisik di server saya dari aturan ini, sehingga mereka dapat diakses. Untuk saat ini semua permintaan dikirim ke file index.php.
Direktori untuk dikecualikan: "admin" dan "user".
Jadi permintaan http: http://www.domain.com/admin/ tidak boleh diteruskan ke file index.php.
ErrorDocument 404 /index.php?mod=error404
Options FollowSymLinks
RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} !^www\.domain\.com$ [NC]
RewriteRule ^(.*)$ http://www.domain.com/$1 [R=301,L]
RewriteRule ^([^/] )/([^/] )\.html$ index.php?lang=$1&mod=$2 [L]
RewriteRule ^([^/] )/$ index.php?lang=$1&mod=home [L]
.htaccess
mod-rewrite
url-rewriting
Kelvin
sumber
sumber
[^/]
sejak ruang kosong jika tidak diizinkan di sana (harus lolos dengan\<space>
).Jawaban:
Coba aturan ini sebelum aturan Anda yang lain:
Ini akan mengakhiri proses penulisan ulang.
sumber
($|/)
harus menangani kedua kasus.RewriteCond
memang selalu membutuhkannyaRewriteRule
. Dan menambahkan kondisi ini sebagai diabaikanRewriteCond
untuk setiapRewriteRule
bisa sangat besar, satuRewriteRule
sebagai jalan keluar di atas mereka yang harus diabaikan dalam kasus seperti itu lebih elegan.Yang juga bisa Anda lakukan adalah meletakkan file .htaccess yang berisi
Di folder Anda ingin mengecualikan dari yang ditulis ulang (oleh aturan dalam file .htaccess yang lebih tinggi di pohon). Sederhana tetapi efektif.
sumber
AllowOverride
ke hal lain selainNone
di konfigurasi apache) memaksa apache untuk mencari .htaccess pada setiap permintaan. jadi jika Anda memiliki situs web / server web yang sering dikunjungi, akses filesystem / harddisk bisa berdampak besar pada kinerja ...tambahkan kondisi untuk memeriksa direktori admin, sesuatu seperti:
sumber
Jika Anda ingin menghapus direktori tertentu dari aturan (artinya, Anda ingin menghapus direktori foo ), Anda dapat menggunakan:
Aturan penulisan ulang di atas akan menulis ulang semua permintaan ke /index.php tidak termasuk permintaan untuk / foo / .
Untuk mengecualikan semua arahan yang ada, Anda harus menggunakan kondisi berikut di atas aturan Anda:
aturan berikut
menulis ulang semuanya (kecuali arahan) ke /index.php .
sumber
Kami menggunakan aturan mod_rewrite berikut:
Pengalihan ini (secara permanen dengan pengalihan 301) semua lalu lintas ke situs ke http://www.newdomain.com , kecuali permintaan ke sumber daya di direktori / test dan / folder saya. Kami mentransfer pengguna ke sumber daya persis yang mereka minta dengan menggunakan grup tangkapan (. *) Dan kemudian memasukkan $ 1 di URL baru. Pikirkan ruangnya.
sumber
sumber