У вас неверные условия сопоставления файлов.
<Files ~ "^\.py">
будет соответствовать файлам, имена которых будут начинаться с символов .py
. Вы захотите
<Files ~ "\.py$">
вместо этого.
Но ваше FilesMatch
регулярное выражение выглядит правильно. Так что, возможно, проблема в другом. Возможно, ваш Apache использует только новые директивы управления доступом в стиле -?
Попробуйте заменить старый стиль -
Order deny,allow
deny from all
с новым эквивалентом стиля -:
Require all denied