Недавно у меня был взломан сайт Joomla, поэтому я пытаюсь немного укрепить его. В рекомендуемом .htaccess есть раздел, который ограничивает внешний доступ к XML-файлам, которые имеют расширения. Однако он также предотвращает доступ к моему файлу sitemap.xml.
Как разрешить доступ к определенному файлу при сохранении остальных?
вот код по умолчанию:
<Files ~ "\.xml$">
Order allow,deny
Deny from all
Satisfy all
</Files>
и моя модификация, вызвавшая ошибку 500:
<Files ~ "(?!sitemap)\.xml$">
Order allow,deny
Deny from all
Satisfy all
</Files>
Вы должны использовать <FilesMatch>
как задокументировано Вот
Кроме того, я думаю, что ваше регулярное выражение должно быть (?<!sitemap)\.xml$
вместо. Как это:
<FilesMatch "(?<!sitemap)\.xml$">
Order allow,deny
Deny from all
</FilesMatch>
В строке FilesMatch есть дополнительный знак «<». Так должно быть:
<FilesMatch "(?!sitemap)\.xml$">
Я наконец решил не связываться с регулярным выражением.
Я добавил:
<Files ~ "sitemap\.xml$">
Order allow,deny
Allow from all
</Files>
потом, и это работает как шарм.