Я только что столкнулся с этим, когда искал решение для чего-то другого.Но, чтобы сделать более простое решение, поскольку вы в основном хотели предотвратить все двойные расширения, вы должны использовать это:
Order Allow,Deny
<FilesMatch "^[^.]+\.(gif|jpe?g|png|pdf|doc|docx|txt|rtf|ppt|pptx|xls|mp4|mov|mp3|mpg|mpeg)$">
Allow from all
</FilesMatch>
Более точно и проще.Используя FilesMatch
(так как FilesMatch
использует REGEX лучше, чем Files
), он использует директиву Order Allow, Deny
, которая означает: сопоставить, разрешить или запретить, если не совпадает, либо отклонить.Таким образом, это отрицает все, кроме того, что разрешено.
[^.]
означает любой символ «не» буквальный период.Так что это охватывает почти все, чего вы хотели достичь.Просто помните, что эти правила не допускают расширения файлов в верхнем регистре.Некоторые люди используют старые приложения, которые создают расширения файлов в верхнем регистре, поэтому вы можете также включить их.
Я не уверен, насколько хорошо нечувствительность к регистру '/i
' работает с Files
или FilesMatch
, поэтому вы можете захотеть создавать классы символов следующим образом:
([Jj][Pp][Ee]?[Gg]|[Pp][Nn][Gg]|[Gg][Ii][Ff]|[Pp][Dd][Ff])
и т. Д.