Saya harap ini adalah jawaban YA atau TIDAK sederhana (mohon jelaskan alasannya)
T1: Apakah penting dalam urutan apa aturan ditempatkan di htaccess? Karena mereka adalah barang yang benar-benar terpisah: misalnya
Q2: Jika ya, apakah saya menerapkan urutan yang benar? untuk mempercepat mesin htacces dan tidak membebani dengan aturan yang tidak perlu?
Q3: setiap tips tentang apa yang harus dinonaktifkan / tambahkan di sini disambut gembira +1!
# DirectoryIndex index.php /index.php
AddDefaultCharset UTF-8
RewriteEngine on
# Options All
# Options +FollowSymLinks
# Options +FollowSymLinks -Indexes -ExecCGI
# RewriteBase /
#####################################################
<IfModule mod_headers.c>
ExpiresActive On
ExpiresDefault M172800
Header unset ETag
FileETag None
Header unset Pragma
##### STATIC FILES
<FilesMatch "\\.(ico|jpg|png|gif|svg|swf|css|js|fon|ttf|eot|xml|pdf|flv)$">
ExpiresDefault M1209600
Header set Cache-Control "public, max-age=1209600"
</FilesMatch>
##### DYNAMIC PAGES
<FilesMatch "\\.(php)$">
ExpiresDefault M604800
Header set Cache-Control "public, max-age=604800"
</FilesMatch>
</IfModule>
#####################################################
# /page123 and /page123/ will all go to /page123.php
RewriteRule ^(.+)/$ /$1 [R=301,L]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)$ $1.php
####################################################
# NO WWW http://www. becomes always http://
RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]
RewriteRule ^(.*)$ http://%1/$1 [R=301,L]
##############################################################
# add own extensions that will be interpreted as php
AddType application/x-httpd-php .php
AddType image/svg+xml svg svgz
AddType text/css css
AddType text/javascript js
AddEncoding gzip svgz
##############################################################
ErrorDocument 500 /
ErrorDocument 404 /
.htaccess
. Singkatnya, arahan dari modul yang berbeda (dan dalam wadah yang berbeda ) dieksekusi secara independen dan dalam urutan yang telah ditentukan, terlepas dari urutan mereka dalam file konfigurasi.Saya tidak dapat berbicara tentang bagaimana urutan
<files>
vs<Rewrite>
, misalnya, mempengaruhi kinerja. Saya mencoba mencari tahu sendiri. Saya belum dapat menemukan info tentang ini, jadi mungkin itu tidak masalah ??Namun, saya ingin menunjukkan bahwa antara
Rewrite
vsRedirect
(danRedirectMatch
), urutan eksekusi mungkin tidak ada dalam urutan yang tercantum, meskipun itu yang sering orang harapkan ..Secara khusus,
mod_rewrite
danmod_alias
modul diproses / dieksekusi secara independen, dan dalam yang order.Rewrite
) dijalankan (agar terdaftar).Redirect
danRedirectMatch
) dieksekusi dalam urutan mereka terdaftar dalam file.Jadi, bahkan jika
Redirect
hasil aRewrite
, Pengalihan akan diproses hanya setelah semua Penulisan Ulang telah diproses.Salah satu cara untuk menjaga file "terbaca" jika Anda memiliki pengalihan dan penulisan ulang, adalah dengan tidak menggunakan
mod_alias
modul sama sekali. Sebaliknya, gunakan sajamod_rewrite
. Menulis ulang dengan bendera [R] pada dasarnya mengubahnya menjadi penulisan ulang.Jawaban webmaster ini menunjukkan caranya.
Sekarang, semua arahan akan dieksekusi dalam urutan mereka muncul dalam file, sehingga tidak ada kejutan buruk, atau kebingungan tentang urutan eksekusi. Atau, Anda dapat memindahkan semua arahan
Redirect
danRedirectMatch
arahan secara fisik ke "bagian bawah" file, sehingga untuk mengingatkan diri Anda bahwa mereka tidak akan dieksekusi sampai setelah tanggalRewrite
.Berikut adalah beberapa jawaban StackExchange yang baik yang telah dicerahkan ke titik ini:
Adapun sisanya, saya belum dapat menemukan info tentang kinerja antara menempatkan
files
sebelum atau sesudahrewrite
, misalnya. Satu-satunya saran berbasis kinerja yang saya temukan, adalah bahwa jika seseorang memiliki akses ke file konfigurasi server, maka yang terbaik adalah memindahkan sebanyak mungkin dari file .htaccess ke file konfigurasi, dan menonaktifkan file .htaccess secara bersamaan (atau tentukan direktori spesifik tempat File .htaccess harus dibaca).Logikanya ada aturan yang ditempatkan dalam file konfigurasi hanya perlu dibaca sekali. Jika pemrosesan htaccess dihidupkan, maka untuk setiap permintaan, setiap direktori server (pada atau lebih tinggi dari direktori yang diminta) harus dicari untuk kemungkinan file htaccess, apakah ada atau tidak. Dan jika mereka melakukannya, setiap orang harus dibaca lagi.
sumber
Saya memiliki masalah yang sama diposting tetapi ini adalah perspektif situs admin server yang memungkinkan mereka untuk me-restart apache setelah perubahan konfigurasi server apache.
Sejauh ini, respons terbaik yang saya terima adalah mendaftar arahan terkait File terlebih dahulu.
Ini masuk akal terkait dengan kebutuhan apache untuk mengelola direktori dan instruksi htaccess di setiap direktori.
Jadi, daftarkan file terkait arahan terlebih dahulu, kemudian blok yang jelas untuk mengakhiri proses htaccess apache dalam urutan yang jelas.
Solusi yang mungkin untuk mengoptimalkan permintaan: - meminta koreksi terkait url - Pembatasan terkait direktori - Pembatasan terkait indeks - Pembatasan terkait file - Pembatasan proxy <- Membunuh semua - Agen pengguna kosong <- Membunuh semua ... daftarnya menyenangkan tanpa akhir
Kekhawatiran saya terkait dengan urutan arahan. Misalnya, haruskah saya menetapkan arahan Index, file, dan Header sebelum RewriteConds?
sumber