Kecualikan format gambar dari direktif File di .htaccess
Maaf jika pertanyaan ini terlalu sederhana atau di tempat yang salah tetapi saya ingin noindex
semuanya kecuali file gambar di server. Saya menggunakan WordPress sebagai CMS tanpa kepala, namun beberapa gambar bersumber langsung dari server saya dan saya masih ingin mereka diindeks, sementara yang lainnya, saya tidak perlu diindeks.
Saya telah bereksperimen dengan yang berikut ini tetapi sintaks saya salah atau secara semantik saya melanggar beberapa aturan:
#<Files ~ "\.(?!png|jpe?g|gif)$"> # Header set X-Robots-Tag "noindex" #</Files> #<FilesMatch ".+\.(gif|jpe?g|png)$">
Header set X-Robots-Tag "noindex"
#</FilesMatch>
Seperti yang saat ini disiapkan, semuanya disetel ke noindex. Bagaimana cara mengecualikan format gambar?
Jawaban
Anda file pertandingan ekspresi reguler berakhir dengan .gif
, .jpg
, .jpeg
& .png
, tetapi Anda membutuhkan ekspresi reguler yang cocok segala sesuatu tetapi mereka. Hal ini dimungkinkan dengan ekspresi reguler lookahead negatif . Dari regular-expressions.info Jan Goyvaerts :
Penampilan negatif sangat diperlukan jika Anda ingin mencocokkan sesuatu yang tidak diikuti dengan yang lain. Saat menjelaskan kelas karakter , tutorial ini menjelaskan mengapa Anda tidak dapat menggunakan kelas karakter yang dinegasikan untuk mencocokkan dengan
q
tidak diikuti oleh au
. Lookahead negatif memberikan solusi:q(?!u)
. Konstruksi lookahead negatif adalah sepasang tanda kurung, dengan tanda kurung buka diikuti dengan tanda tanya dan tanda seru. Di dalam lookahead, kita memiliki regex sepeleu
.
Jadi di sini, Anda akan mengganti u
dengan Anda .*\.(gif|jpe?g|png)$
, menghasilkan sesuatu seperti:
<FilesMatch "^(?!.*\.(gif|jpe?g|png)$).*$">
Header set X-Robots-Tag "noindex"
</FilesMatch>