- Htaccess filesmatch не работает
- Полезные хаки и сниппеты для .htaccess
- Using FilesMatch and Files in htaccess
- Adding UTF-8 content-type and and en-US language headers to files with extensions htm, html, css, js, and php
- Other Examples using Files and FilesMatch in htaccess
- Target a single file admin.php
- Target files that start with admin or staff and end in .php
- Target all files that end in .html or .htm
Htaccess filesmatch не работает
Похоже не понимаю сути работы этой системы.
Если запрашиваемый файл есть на диске в папке — никакие запреты Allow/Deny через FilesMatch или RewriteRule не срабатывают. (Если нет — тогда да).
Такая ерунда на нескольких серверах, везде Debian 5, ISP manager
Так и должно быть?
Документацию читать пробовали?
Срабатывают. Но телепаты в отпуске, и что вы делаете не так — простые смертные не понимают.
Приведите правила и логи
пардон, слишком в общем отписал, уточню на примерах:
допустим в htaccess написано:
RewriteCond %
RewriteRule \.(jpg)$ — [F]
заходим с юзерагентом яндекса, site.ru/image.jpg
— файл есть на диске: получаем картинку
— файла нет на диске: получаем 403 Forbidden
Изначально хотелось чтобы в обоих случаях было 403
Точно такая же ситуация если так:
И даже если так:
Order Allow,Deny
Deny from all
Проделываем то же самое на виртуальном хостинге с сипанелью — оба варианта 403
nocomments:
допустим в htaccess написано:
RewriteCond %
RewriteRule \.(jpg)$ — [F]
заходим с юзерагентом яндекса, site.ru/image.jpg
— файл есть на диске: получаем картинку
— файла нет на диске: получаем 403 Forbidden
Изначально хотелось чтобы в обоих случаях было 403
Хотите дальше. Либо читайте документацию, никаких сюрпризов не будет.
С чего вы вообще взяли, что этот кусок правил работает? Yandex* — не регулярное выражение (CondPattern is usually a perl compatible regular expression). Правильнее: Yandex.*
И учитывайте, по-умолчанию тест чувствителен к регистру.
Должно работать. Проблемой, скорее всего, являются другие правила — реврайты какие-либо и т.п.
Запросы статики до апача доходят?
Так сначала попробуйте
RewriteRule \.(jpg)$ — [F]
Кстати, да. nginx-то в ISP выключен?
Иначе статику будет отдавать nginx, а апач она минует. Скажите спасибо разработчикам ISP за проблему из ничего.
Сделал такой вывод, потому что он совершенно корректно работает на виртуальных хостингах и потому что на тестируемом выдаёт 403 в случае, если файла нет на диске. (А не 404, если это правило убрать или если выключить подмену юзерагента).
Не, нету больше ничего, только включение реврайтенжин.
Попробовал, оставил только
RewriteRule \.(jpg)$ — [F]
Результат тот же — если файл есть на диске его видно.
Выглядит так, что если файл присутствует — апач вообще не лезет htaccess, все правила работают только для ситуаций когда файла физически нет. Но это только на данной конфигурации (Debian5+ISPManager), в остальных случаях всё обрабатывается корректно. Похоже где-то есть какая-то соответствующая настройка.
В панели nginx-0.6.32-3+lenny3 — жёлтая лампочка справа..
Источник
Полезные хаки и сниппеты для .htaccess
Это перевод очень интересной лично для меня статьи, которым я хочу поделиться с уважаемым хабрасообществом. Некоторые из приведенных рецептов я уже встречал на Хабре, но разрозненно и далеко не все из нижеприведенного.
О предназначении файла .htaccess знает каждый веб-разработчик. На базовом уровне он позволяет управлять доступом к каталогам сайта. Но добавляя в него различные дополнительные фрагменты кода, с ним можно сделать и много других интересных вещей.
Если же вам нужны базовые сведения о предназначении данного файла, то вы можете получить из нашей статьи введение в .htaccess (перевод данной статьи не делал, так как там основы, их достаточно в русскоязычном сегменте Сети, но если будет проявлен интерес, то можно и ее перевести для полноты картины — прим. переводчика), в которой достаточно подробно раскрыты все аспекты его применения.
Итак, полезные примеры использования. htaccess:
1. Управление доступом к файлам и каталогам
Защита паролем — это одно, но иногда может понадобиться полностью блокировать доступ пользователей к определенному файлу или папке. Обычно это относится к системным папкам, таким, например, как includes, доступ к которым должны иметь приложения, но не пользователи.
Чтобы сделать это, поместите данный код в файл. htaccess и сохраните его в каталоге к которому закрываете доступ:
Однако учитывайте, что доступ будет блокирован для всех пользователей, включая и вас. Открыть доступ для конкретного пользователя можно прописав его IP-адрес. Вот код, который для этого потребуется:
где xxx. xxx. xxx. xxx — это ваш IP. Для задания разрешенных диапазонов IP-адресов вы можете заменить три последние цифры. Например, написав вместо них «0/12», вы зададите диапазон IP-адресов одной сети, что избавит вас от необходимости вводить в список все разрешенные IP-адреса отдельно.
Если вы хотите заблокировать доступ к определенному файлу, включая сам. htaccess, используйте следующий фрагмент кода:
Если вы хотите указать определенные IP-адреса которым надо запретить доступ, перечислите их при помощи allow from.
Если же вы хотите заблокировать доступ к файлам определенного типа, используйте этот код:
2. Запрет на просмотр директорий
Для предотвращения просмотра директорий сайта добавьте в .htaccess следующий код:
Если же по какой-то причине вы хотите разрешить просмотр всех директорий, используйте код:
3. Ускорение времени загрузки за счет сжатия файлов
Сжимать можно файлы любого типа. Например, для сжатия HTML-файлов добавьте код:
Для сжатия текстовых файлов используйте:
Вы также можете сжать JavaScript или включить сжатие для других различных типов файлов командами:
Кроме того, вы можете сжать все ваши JavaScript, HTML и CSS файлы при помощи GZIP. Для этого используйте следующий код:
4. Защита сайта от вставки изображений с других ресурсов
Если вы хотите запретить добавление ссылок на изображения со сторонних ресурсов, добавьте в файл .htaccess код:
Не забудьте заменить yourdomain.com на имя вашего домена.
5. Блокировка посетителей, перешедших с определенного домена
Если вы не хотите видеть на своем сайте пользователей с конкретного домена, то вы можете запретить им доступ. Например, пользователей с нежелательных ресурсов (сайты для взрослых, хакерские сайты и т. д.) вы можете перенаправлять на страницу 403 Forbidden. Для этого необходимо включить mod_rewrite, хотя, как правило, он включен по умолчанию. Добавьте в .htaccess код:
Вам необходимо заменить bannedurl1.com и bannedurl2.com доменами, которые вы хотите внести в черный список. Вы можете использовать флаг [NC], указывающий, что введенное доменное имя нечувствительно к регистру. Флаг [F] указывает на тип действия, в данном случае — отображение ошибки 403 Forbidden. Если вы хотите запретить несколько сайтов, используйте флаги [NC, OR] для каждого домена, если же вы хотите запретить использование одного домена — используйте только флаг [NC].
6. Блокирование запросов от определенных браузеров
Если в ваших файлах журналов появились записи о посещении особых браузеров (это могут быть имитирующие работу браузера боты или пауки), вы можете запретить им доступ на свой сайт, добавив несколько строк в. htaccess:
Замените badbot1, badbot1 и т. д. именами ботов из вашего журнала. Это закроет посторонним программам доступ к вашему сайту.
7. Кэширование файлов
Кэширование файлов — еще один способ ускорить загрузку вашего сайта. Вот то, что вам нужно прописать в .htaccess:
Вы можете добавить больше типов файлов (или удалить некоторые из них) в перечисленныq в данном примере список файлов. Вы также можете указать время сохранения файлов в кэше (в секундах) при помощи переменной max-age.
8. Отключение кэширования для разных типов файлов
Если вы не хотите кэшировать определенные типы файлов, можно не включать их в список. Однако иногда файлы могут сохраняться в кэше даже не будучи явно перечисленными в списке, в этом случае вы можете отключить кэширование для них индивидуально. Чаще всего отключать кэширование требуется для динамических файлов, таких как сценарии. Пример требуемого для этого кода:
Просто укажите типы файлов, для которых нужно отключить кэширование.
9. Обход диалога загрузки
По умолчанию при попытке загрузить файл с веб-сервера отображается диалог, который спрашивает вас, хотите ли вы сохранить файл или открыть его. Этот диалог особенно раздражает при скачивании больших медиа- или PDF-файлов. Если файлы, которые вы загрузили на сервер, предназначены исключительно для скачивания, вы можете облегчить жизнь пользователей, установив загрузку действием по умолчанию. Добавьте в. htaccess следующее:
10. Переименование файла .htaccess
Если вы по каким-то причинам хотите переименовать файл .htaccess, то вы можете это сделать. Теоретически, переименование файла .htaccess не должно вызывать проблем с приложениями, запущенными на вашем сервере, но если вы заметите появление ошибок выполнения сценариев после переименования файла, то просто переименуйте его обратно.
Кроме того, необходимо обновить все записи, в которых упоминается файл .htaccess, иначе возникнет множество ошибок.
11. Замена стартовой страницы сайта
Если вы хотите установить главную страницу, отличную от стандартной (index.html, index.php, index.htm и т. д.), добавьте следующий код в файл .htaccess:
Замените mypage.html на URL страницы, которую вы хотите использовать в качестве главной.
12. Перенаправление на защищенное соединение HTTPS
Если вы используете HTTPS и хотите перенаправить пользователей на защищенные страницы вашего сайта, добавьте в файл .htaccess следующие строки:
13. Ограничение максимального размера загружаемых файлов в PHP, максимального размера передаваемых данных, максимального времени выполнения скриптов и т.п.
.htaccess позволяет устанавливать некоторые значения, непосредственно влияющие на работу PHP приложений. Например, если вы хотите установить в PHP ограничение на размер загружаемых файлов, чтобы не забивать хостинг большими файлами:
Вы можете установить любое значение, в примере размер файла ограничен 15M (MБ). Помимо этого вы можете ограничить максимальный размер передаваемых при загрузке в PHP данных:
Вы можете заменить 10М на любое требуемое вам значение. Если вам не требуется постоянное выполнение скриптов, вы можете ограничить время их выполнения с помощью строки:
240 — время выполнения (в секундах), после которого скрипт будет остановлен, вы можете изменить это значение на любое другое. Наконец, если вы хотите ограничить время анализа скриптом исходных данных, используйте следующий код:
Установите вместо 180 любое требуемое вам время (в секундах).
14. Скрытие типов файлов
Иногда нужно, чтобы пользователи не знали, какие типы файлов находятся на вашем сайте. Один из способов скрыть эту информацию — сделать так, чтобы все ваши файлы отображались как HTML или PHP файлы:
И это лишь часть того, что может .htaccess, а вообще он позволяет сделать гораздо больше. Например, вы можете установить автоматический перевод страниц вашего сайта, установить часовой пояс сервера, удалить WWW из URL-адресов или использовать причудливые представления каталогов и т.д. Но в любом случае, прежде чем начинать эксперименты с файлом .htaccess, всегда сохраняйте резервную копию оригинального .htaccess, чтобы при возникновении проблем можно было быстро восстановить работу сайта.
UPD (спасибо akuma) расширение РНР для скрытия формата файлов приведено как пример и использование этого трюка в реальном проекте может оказаться небезопасным
Источник
Using FilesMatch and Files in htaccess
Files and FilesMatch to target multiple files and using Regular expressions using .htaccess files on Apache.
NOTE: FilesMatch should be used instead of Files when dealing with multiple files.
Adding UTF-8 content-type and and en-US language headers to files with extensions htm, html, css, js, and php
Using the Files Directive
Using the FilesMatch Directive (preferred)
Other Examples using Files and FilesMatch in htaccess
Target a single file admin.php
Target files that start with admin or staff and end in .php
Target all files that end in .html or .htm
Directive Description: Contains directives that apply to regular-expression matched filenames Syntax: . Context: server config, virtual host, directory, .htaccess
The directive limits the scope of the enclosed directives by filename, just as the directive does. However, it accepts a regular expression. For example:
Directive Description: Contains directives that apply to matched filenames Syntax: .
The directive limits the scope of the enclosed directives by filename. It is comparable to the and directives. It should be matched with a directive. The directives given within this section will be applied to any object with a basename (last component of filename) matching the specified filename. sections are processed in the order they appear in the configuration file, after the sections and .htaccess files are read, but before sections. Note that can be nested inside sections to restrict the portion of the filesystem they apply to.
The filename argument should include a filename, or a wild-card string, where ? matches any single character, and * matches any sequences of characters. Extended regular expressions can also be used, with the addition of the
character. For example:
would match most common Internet graphics formats. is preferred, however.
Note that unlike and sections, sections can be used inside .htaccess files. This allows users to control access to their own files, at a file-by-file level.
The configuration sections are applied in a very particular order. Since this can have important effects on how configuration directives are interpreted, it is important to understand how this works.
The order of merging is:
- (except regular expressions) and .htaccess done simultaneously (with .htaccess, if allowed, overriding )
- (and )
- and done simultaneously
- and done simultaneously
Apart from , each group is processed in the order that they appear in the configuration files. (group 1 above) is processed in the order shortest directory component to longest. So for example, will be processed before . If multiple sections apply to the same directory they are processed in the configuration file order. Configurations included via the Include directive will be treated as if they were inside the including file at the location of the Include directive.
Sections inside sections are applied after the corresponding sections outside the virtual host definition. This allows virtual hosts to override the main server configuration.
Later sections override earlier ones.
Technical Note: There is actually a / sequence performed just before the name translation phase (where Aliases and DocumentRoots are used to map URLs to filenames). The results of this sequence are completely thrown away after the translation has completed.
Источник