Tuve que no noindex archivos pdf. Lo hice muchas veces, así que en este caso, usé una directiva de files para agregar el encabezado noindex con X-Robots-Tag , como recomienda Google :
<Files ~ "\.pdf$"> Header set X-Robots-Tag "noindex, nofollow" </Files> Cuando he usado esto antes, funcionó a las mil maravillas. Pero en este caso, no me di cuenta de que X-Robots-Tag por sí solo, ni su contenido ( noindex , nofollow ) en el encabezado. Se habilitó Mod_headers.
Lo intenté
<FilesMatch ~ "\.pdf$"> Header set X-Robots-Tag "noindex, nofollow" </FilesMatch>sin suerte
Después de muchos intentos y errores, lo tengo funcionando con
<LocationMatch ~ "\.pdf$"> Header set X-Robots-Tag "noindex, nofollow" </LocationMatch>Pero realmente no entiendo por qué la regla que usé durante años dejó de funcionar y la regla que probé a ciegas, de repente funciona.
¿Alguien podría explicármelo?
La documentación de Apache establece que FilesMatch toma un patrón de expresión regular <FilesMatch regexp> y se prefiere usar <Files ~ "regexp">
La directiva <FilesMatch> limita el alcance de las directivas adjuntas por nombre de archivo, tal como lo hace la directiva <Files>. Sin embargo, acepta una expresión regular. En mi experiencia con RegEx, esto significa usar un comodín para hacer coincidir todo, en lugar de la directiva <Files> normal que coincide con una subcadena.
En cuanto a hacer coincidir todos los archivos con nombre en una expresión, eso significa que se requiere una pequeña modificación en su código existente:
<FilesMatch ".+\.pdf$"> Header set X-Robots-Tag "noindex, nofollow" </FilesMatch> Si espera tener un archivo llamado .pdf que también necesita excluir, reemplace + en esa expresión con * . Esto se debe a cómo coincide RegEx:
. Coincidir con cualquier carácter, una vez.+ El modificador o bloque anterior debe ocurrir una o más veces* El modificador o bloque anterior puede ocurrir cero o más veces Esto significa que .+ coincide con todos los archivos que tienen al menos un carácter antes de .pdf en el nombre del archivo y .* coincide con todos los archivos que terminan en .pdf .
En cuanto a una explicación de por qué su directiva de Files no funciona: la directiva de Archivos puede ser anulada por otras directivas de Archivos que aparecen más adelante en la misma configuración o dentro de un archivo .htaccess en el directorio en el que está guardando los archivos pdf. Además, hay un orden en el que se manejan las directivas y todas pueden anular los pasos anteriores: Directory < Files en Directory < .htaccess < Files en .htaccess < Location . Entonces, lo más probable es que sea una parte diferente de la configuración que ignora la directiva Files