A linha FilesMatch tem um "<" extra. Deve ser:
<FilesMatch "(?!sitemap)\.xml$">
Recentemente tive um site do Joomla hackeado, então estou tentando endurecer o site um pouco. Há uma seção no .htaccess recomendado que restringe o acesso externo aos arquivos xml que acompanham as extensões. No entanto, ele também impede que meu arquivo sitemap.xml seja acessado.
Como faço para permitir um determinado arquivo mantendo o resto?
aqui está o código padrão:
<Files ~ "\.xml$">
Order allow,deny
Deny from all
Satisfy all
</Files>
e minha modificação que causou um erro 500:
<Files ~ "(?!sitemap)\.xml$">
Order allow,deny
Deny from all
Satisfy all
</Files>
Você deve usar <FilesMatch>
conforme documentado aqui
Além disso, acho que sua regex deve ser (?<!sitemap)\.xml$
. Assim:
<FilesMatch "(?<!sitemap)\.xml$">
Order allow,deny
Deny from all
</FilesMatch>
Eu finalmente decidi não mexer com o regex.
Eu adicionei:
<Files ~ "sitemap\.xml$">
Order allow,deny
Allow from all
</Files>
depois e funciona como um encanto.