Kecualikan format gambar dari direktif File di .htaccess

Oct 31 2020

Maaf jika pertanyaan ini terlalu sederhana atau di tempat yang salah tetapi saya ingin noindexsemuanya 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

3 EsaJokinen Oct 31 2020 at 09:43

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 qtidak diikuti oleh a u. 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 sepele u.

Jadi di sini, Anda akan mengganti udengan Anda .*\.(gif|jpe?g|png)$, menghasilkan sesuatu seperti:

<FilesMatch "^(?!.*\.(gif|jpe?g|png)$).*$">
    Header set X-Robots-Tag "noindex"
</FilesMatch>