.htaccess mengabaikan RewriteCond
Saya memiliki .htaccess berikut.
RewriteEngine On
# HTTPS redirect
RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteCond %{THE_REQUEST} !^/robots.txt [NC]
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301,NE]
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [L] RewriteRule ^(.+)$ /index.php [L,QSA]
Bagian utama adalah pengalihan HTTPS. Saya tidak ingin mengalihkan robots.txt ke https, tetapi
RewriteCond %{THE_REQUEST} !^/robots.txt [NC]
selalu diabaikan dan robots.txt juga dialihkan ke https.
Tahu apa yang salah?
Jawaban
anubhava
Kondisi ini akan selalu mengembalikan nilai salah:
RewriteCond %{THE_REQUEST} !^/robots.txt [NC]
Itu karena jangkar awal ^
sebelumnya /
karena nilai contoh THE_REQUEST
adalah:
GET /index.php?id=123 HTTP/1.1
Jadi ubahlah kondisi Anda menjadi ini:
RewriteCond %{THE_REQUEST} !^[A-Z]{3,}\s/+robots\.txt\s [NC]
dan tes ulang di browser baru.
Kiat Pemilik Anjing yang Bermanfaat: Mengapa Penting untuk Membiarkan Anjing Anda Mengendus di Jalan
Taylor Sheridan Baru Menambahkan 1 Bintang 'Yellowstone' Favoritnya ke Pemeran 'Lawmen: Bass Reeves'