Публикации

Форумы

Использование сниппетов и хаков в «.htaccess»
 

Использование сниппетов и хаков в «.htaccess»

 
Модераторы: Патрик, net1313, Predator, Perfecthus, Kapman
Автор Добавил
Offline Predator
29.05.15 - 11:36
Predator


Сообщений: 4039
О предназначении файла .htaccess знает каждый веб-разработчик. На базовом уровне он позволяет управлять доступом к каталогам сайта. Но добавляя в него различные дополнительные фрагменты кода, с ним можно сделать и много других интересных и полезных вещей.

Если вам нужны базовые сведения о назначении данного файла, то вы можете узнать о них из нашей статьи введение в .htaccess, в которой достаточно подробно раскрыты все аспекты его применения.

Итак, полезные примеры использования. htaccess:

1. Управление доступом к файлам и каталогам

Защита паролем — это одно, но иногда может понадобиться полностью блокировать доступ пользователей к определенному файлу или папке. Обычно это относится к системным папкам, таким, например, как includes, handlers и т.п., доступ к которым должны иметь приложения, но не пользователи.

Чтобы сделать это, поместите нижеприведённый код в файл. htaccess и сохраните его в каталоге к которому закрываете доступ:
  1. deny from all


Однако учтите, что доступ будет блокирован для всех пользователей, включая и вас. Открыть доступ для конкретного пользователя можно прописав его IP-адрес. Вот код, который для этого потребуется:
  1. order deny,allow
  2. deny from all
  3. allow from xxx.xxx.xxx.xxx


где xxx. xxx. xxx. xxx — это ваш IP-адрес. Для задания разрешенных диапазонов IP-адресов вы можете заменить три последние цифры. Например, написав вместо них «0/12», вы зададите диапазон IP-адресов одной сети, что избавит вас от необходимости вводить в список все разрешенные IP-адреса отдельно.

Если вы хотите заблокировать доступ к определенному файлу, включая сам. htaccess, используйте следующий фрагмент кода:
  1. <Files .htaccess>order allow,deny
  2. deny from all
  3. </Files>


Если вы хотите указать определенные IP-адреса, которым надо запретить доступ, перечислите их при помощи allow from.

Если вы хотите заблокировать доступ к файлам определенного типа, используйте такой код:
  1. <FilesMatch ".(htaccess|htpasswd|ini|phps|fla|psd|log|sh)$">Order Allow,Deny
  2. Deny from all
  3. </FilesMatch>


2. Запрет на просмотр директорий

Для предотвращения просмотра директорий сайта добавьте в .htaccess следующий код:
  1. Options All -Indexes


Если же по какой-то причине вы хотите разрешить просмотр всех директорий, используйте код:
  1. Options All +Indexes


3. Ускорение времени загрузки за счет сжатия файлов

Сжимать можно файлы любого типа. Например, для сжатия HTML-файлов добавьте код:
  1. AddOutputFilterByType DEFLATE text/html


Для сжатия текстовых файлов используйте:
  1. AddOutputFilterByType DEFLATE text/plain


Вы также можете сжать JavaScript или включить сжатие для других различных типов файлов командами:
  1. AddOutputFilterByType DEFLATE application/javascript
  2. AddOutputFilterByType DEFLATE application/rss+xml


Кроме того, вы можете сжать все ваши JavaScript, HTML и CSS файлы при помощи GZIP. Для этого используйте следующий код:
  1. <IfModule mod_gzip.c>mod_gzip_on Yes
  2. mod_gzip_dechunk Yes
  3. mod_gzip_item_include file \.(html?|txt|css|js|php|pl)$
  4. mod_gzip_item_include handler ^cgi-script$
  5. mod_gzip_item_include mime ^text\.*
  6. mod_gzip_item_include mime ^application/x-javascript.*
  7. mod_gzip_item_exclude mime ^image\.*
  8. mod_gzip_item_exclude rspheader ^Content-Encoding:.*gzip.*
  9. </IfModule>


4. Защита сайта от вставки изображений с других ресурсов

Если вы хотите запретить добавление ссылок на изображения со сторонних ресурсов, добавьте в файл .htaccess код:
  1. RewriteEngine on
  2. RewriteCond %{HTTP_REFERER} !^$
  3. RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?yourdomain.com [NC]
  4. RewriteRule \.(jpg|jpeg|png|gif)$ - [NC,F,L]


Не забудьте заменить yourdomain.ru на имя вашего домена.

5. Блокировка посетителей, перешедших с определенного домена

Если вы не хотите видеть на своем сайте пользователей с конкретного домена, то вы можете запретить им доступ. Например, пользователей с нежелательных ресурсов (сайты для взрослых, хакерские сайты и т. д.) вы можете перенаправлять на страницу 403 Forbidden. Для этого необходимо включить mod_rewrite, хотя, как правило, он включен по умолчанию. Добавьте в .htaccess код:
  1. <IfModule mod_rewrite.c>RewriteEngine on
  2. RewriteCond %{HTTP_REFERER} bannedurl1.com [NC,OR]
  3. RewriteCond %{HTTP_REFERER} bannedurl2.com [NC,OR]
  4. RewriteRule .* - [F]
  5. </ifModule>


Вам необходимо заменить bannedurl1.ru и bannedurl2.ru доменами, которые вы хотите внести в черный список. Вы можете использовать флаг [NC], указывающий, что введенное доменное имя нечувствительно к регистру. Флаг [F] указывает на тип действия, в данном случае — отображение ошибки 403 Forbidden. Если вы хотите запретить несколько сайтов, используйте флаги [NC, OR] для каждого домена, если же вы хотите запретить использование одного домена — используйте только флаг [NC].

  1. 6. Блокирование запросов от определенных браузеров


Если в ваших файлах журналов появились записи о посещении особых браузеров (это могут быть имитирующие работу браузера боты или пауки), вы можете запретить им доступ на свой сайт, добавив несколько строк в. htaccess:
  1. RewriteEngine On
  2. RewriteBase /
  3. SetEnvIfNoCase Referer "^$" bad_user
  4. SetEnvIfNoCase User-Agent "^badbot1" bad_user
  5. SetEnvIfNoCase User-Agent "^badbot2" bad_user
  6. SetEnvIfNoCase User-Agent "^badbot3" bad_user
  7. Deny from env=bad_user


Замените badbot1, badbot1 и т. д. именами ботов из вашего журнала. Это закроет посторонним программам доступ к вашему сайту.

7. Кэширование файлов

Кэширование файлов — еще один способ ускорить загрузку вашего сайта. Вот то, что вам нужно прописать в .htaccess:
  1. <FilesMatch ".(flv|gif|jpg|jpeg|png|ico|swf|js|css|pdf)$">Header set Cache-Control "max-age=2592000"
  2. </FilesMatch>


Вы можете добавить больше типов файлов (или удалить некоторые из них) в перечисленный в данном примере список файлов. Вы также можете указать время сохранения файлов в кэше (в секундах) при помощи переменной max-age.

8. Отключение кэширования для разных типов файлов

Если вы не хотите кэшировать определенные типы файлов, можно не включать их в список. Однако иногда файлы могут сохраняться в кэше даже не будучи явно перечисленными в списке, в этом случае вы можете отключить кэширование для них индивидуально. Чаще всего отключать кэширование требуется для динамических файлов, таких как сценарии. Пример требуемого для этого кода:
  1. <FilesMatch ".(pl|php|cgi|spl|scgi|fcgi)$">Header unset Cache-Control
  2. </FilesMatch>


Просто укажите типы файлов, для которых нужно отключить кэширование.

9. Обход диалога загрузки

По-умолчанию при попытке загрузить файл с веб-сервера отображается диалог, который спрашивает вас, хотите ли вы сохранить файл или открыть его. Этот диалог особенно раздражает при скачивании больших медиа- или PDF-файлов. Если файлы, которые вы загрузили на сервер, предназначены исключительно для скачивания, вы можете облегчить жизнь пользователей, установив загрузку действием по-умолчанию. Добавьте в. htaccess следующее:
  1. AddType application/octet-stream .pdf
  2. AddType application/octet-stream .zip
  3. AddType application/octet-stream .mp3


10. Переименование файла .htaccess

Если вы по каким-то причинам хотите переименовать файл .htaccess, то вы можете это сделать. Теоретически, переименование файла .htaccess не должно вызывать проблем с приложениями, запущенными на вашем сервере, но если вы заметите появление ошибок выполнения сценариев после переименования файла, то просто переименуйте его обратно.
  1. AccessFileName htac.cess


Кроме того, необходимо обновить все записи, в которых упоминается файл .htaccess, иначе возникнет множество ошибок.

11. Замена стартовой страницы сайта

Если вы хотите установить главную страницу, отличную от стандартной (index.html, index.php, index.htm и т. д.), добавьте следующий код в файл .htaccess:

DirectoryIndex mypage.html

Замените mypage.html на URL страницы, которую вы хотите использовать в качестве главной.

12. Перенаправление на защищенное соединение HTTPS

Если вы используете HTTPS и хотите перенаправить пользователей на защищенные страницы вашего сайта, добавьте в файл .htaccess следующие строки:
  1. RewriteEngine On
  2. RewriteCond %{HTTPS} !on
  3. RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}


13. Ограничение максимального размера загружаемых файлов в PHP, максимального размера передаваемых данных, максимального времени выполнения скриптов и т.п.

.htaccess позволяет устанавливать некоторые значения, непосредственно влияющие на работу PHP приложений. Например, если вы хотите установить в PHP ограничение на размер загружаемых файлов, чтобы не забивать хостинг большими файлами:
  1. php_value upload_max_filesize 15M


Вы можете установить любое значение, в приведённом примере размер файла ограничен 15M (MБ). Помимо этого вы можете ограничить максимальный размер передаваемых при загрузке в PHP данных:
  1. php_value post_max_size 10M


Вы можете заменить 10М на любое нужное вам значение. Если вам не требуется постоянное выполнение скриптов, вы можете ограничить время их выполнения с помощью строки:
  1. php_value max_execution_time 240


Где 240 — время выполнения (в секундах), после которого скрипт будет остановлен, вы можете изменить это значение на любое другое. Наконец, если вы хотите ограничить время анализа скриптом исходных данных, используйте следующий код:
  1. php_value max_input_time 180


Установите вместо 180 любое требуемое вам время (в секундах).

14. Скрытие типов файлов

Иногда нужно, чтобы пользователи не знали, какие типы файлов находятся на вашем сайте. Один из способов скрыть эту информацию — сделать так, чтобы все ваши файлы отображались как HTML или PHP файлы:
  1. ForceType application/x-httpd-php
  2. ForceType application/x-httpd-php


В данной статье приведена лишь часть того, что может .htaccess, а вообще он позволяет сделать гораздо больше. Например, вы можете установить автоматический перевод страниц вашего сайта, установить часовой пояс сервера, удалить www из URL-адресов или использовать причудливые представления каталогов и т.д. Но в любом случае, прежде чем начинать эксперименты с файлом .htaccess, всегда сохраняйте резервную копию оригинального .htaccess, чтобы при возникновении проблем можно было быстро восстановить работу сайта.

Примечание: Расширение РНР для скрытия формата файлов приведено, как пример - использование в реальном проекте может оказаться небезопасным.

Оригинал статьи: Useful .htaccess Snippets and Hacks


Я не матерюсь, а всего лишь употребляю ненормативную лексику в целях более полного и лаконичного выражения своих эмоций.
Вернуться наверх
Популярность сообщения: 2
Рекламный блок
VPS
Наверх

Offline Nostromo
29.05.15 - 14:48
Nostromo

Сообщений: 148
Спасибо, полезная информация!
Вернуться наверх
Популярность сообщения: 0
 
Offline Real
29.05.15 - 19:40
Real

Сообщений: 1236
так-же рекомендую к изучению и использованию


Всё, что существует на свете, когда-то было мечтой.
Вернуться наверх
Популярность сообщения: 2
 
 
Использование сниппетов и хаков в «.htaccess»

Перейти:  Вернуться наверх