Использование .htaccess в примерах

0
7

.htaccess (hypertext access, конфигурционный файл web сервера Apache) — это файл для дополнительной конфигурации Apache и разрешений для работы веб-сервера в отдельных каталогах.

Внимание! Перед тем как вносить изменение в файл, не забывайте делать резервную копию оригинального файла .htaccess. Это спасет вас от ошибок и все возможных проблем. Дело в том, что не правильная конфигурация .htaccess может привести к серьезному снижению производительности вашего web-сайта, в отдельных случаях даже до нерабочего состояния вообще.

Возможно такое, что некоторые рассмотренные варианты могут не работать, это зависит от настроек вашего web-сервера или сервера хостера.

.htaccess является подобием httpd.conf с той разницей, что действует только на каталог, в котором располагается, и на его дочерние каталоги. Возможность использования .htaccess в том или ином каталоге указывается в httpd.conf (директива AllowOverride).

Файл .htaccess может быть размещён в любом каталоге. Директивы этого файла действуют на все файлы в текущем каталоге и во всех его подкаталогах (если эти директивы не переопределены директивами нижележащих файлов .htaccess). Для того чтобы эти файлы .htaccess можно было использовать, необходимы соответствующие настройки главного конфигурационного файла (значение директивы AllowOverride должно быть установлено All). Как правило, подавляющее большинство хостеров разрешают использовать свои файлы .htaccess.

Пути к файлам и каталогам должны указываться от корня сервера, например, /var/www/download.openlib.org.ua/web/

1. Запрет на загрузку файлов с внешних сайтов.

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

Options +FollowSymlinks

#Запрет на загрузку файлов с внешних сайтов

RewriteEngine On

RewriteCond %{HTTP_REFERER} !^$

RewriteCond %{HTTP_REFERER} !^http://(www.)download.openlib.org.ua/ [nc]

RewriteRule .*.(gif|jpg|png)$ http://download.openlib.org.ua/img/ban_on_downloading.gif[nc]

Не забудьте поменять download.openlib.org.ua на доменное имя вашего ресурса и создать изображение ban_on_downloading.gif, которое будет показано вместо запрашиваемой картинки.
2. Блокирование запросов от нежелательных User Agents.

С помощью этого правила можно заблокировать нежелательные User Agent, которые могут быть потенциально опасными или перегружать сервер ненужными запросами.

#Блокируем запросы от плохих ботов

SetEnvIfNoCase user-Agent ^FrontPage [NC,OR]

SetEnvIfNoCase user-Agent ^Java.* [NC,OR]

SetEnvIfNoCase user-Agent ^Microsoft.URL [NC,OR]

SetEnvIfNoCase user-Agent ^MSFrontPage [NC,OR]

SetEnvIfNoCase user-Agent ^Offline.Explorer [NC,OR]

SetEnvIfNoCase user-Agent ^[Ww]eb[Bb]andit [NC,OR]

SetEnvIfNoCase user-Agent ^Zeus [NC]

Order Allow,Deny

Allow from all

Deny from env=bad_bot

Список User Agent браузеров, роботов и пауков поисковых машин, веб-каталогов, менеджеров закачек, спам-ботов и плохих ботов можно легко найти в интернете.

3. Запрет доступа для всех IP адресов и исключения.

Для того, что бы запретить доступ к вашему сайту всем или разрешить только отдельным IP-адресам, добавьте следующий код в ваш файл .htaccess.

#Запрет доступа для всех IP

ErrorDocument 403 http://www.download.openlib.org.ua

Order deny,allow

Deny from all

Allow from 77.87.194.47

Allow from 77.87.195.48

download.openlib.org.ua — имя вашего ресурса.

4. Настройка SEO-Friendly 301 Redirect

Если вы перенесли доменное имя или хотите перенаправить пользователей на определенную страницу без санкций со стороны поисковиков, используйте следующий код:

Настройка SEO-Friendly 301 Redirect

Redirect 301 /p=452 http://www.download.openlib.org.ua/kak_sozdat_zagruzochnuju_fleshku_Windows_7

download.openlib.org.ua — имя вашего ресурса, /p=452 и /kak_sozdat_zagruzochnuju_fleshku_Windows_7 — страницы с которой и на какую надо перенаправить.

5. Создание собственных страниц ошибок.

С помощью следующего кода вы сможете заменить стандартные страницы ошибок на свои.

ErrorDocument 401 /error/401.php

ErrorDocument 403 /error/403.php

ErrorDocument 404 /error/404.php

ErrorDocument 500 /error/500.php

6. Создание черного списка IP адресов.

Надоели спам-сообщения или комментарии определенного пользователя Просто заблокируйте их IP адреса с помощью приведенного кода.

#Создаем черный список IP адресов

allow from all

deny from 193.168.100.100

deny from 214.75.

Узнать IP адреса пользователей можно или в логах Apache или с помощью серверов статистики.

7. Установка e-mail адреса администратора сервера по умолчанию.

Для выполнения данного действия используйте следующий код.

Установка e-mail адреса администратора сервера по умолчанию

ServerSignature EMail

SetEnv SERVER_ADMIN [email protected]

[email protected] — ваш e-mail адрес.

8. Защита определенного файла.

С помощью приведенного кода можо запретить доступ к любому файлу на вашем сайте — при запросе будет выдаваться страница ошибки 403. Для примера, можно повысить уровень безопасности сайта закрыв доступ к файлу .htacess.

#Защищаем .htaccess файл

order allow,deny

deny from all

9. Сжатие элементов с помощью mod_deflate.

В качестве альтернативы компрессии файлов с помощью Gzip, можно использовать mod_deflate. Данный код следует разместить в начале файла .htaccess. (так же можно добавить .jpg|.gif|.png|.tiff|.ico).

#Сжатие элементов с помощью mod_deflate.

<

SetOutputFilter DEFLATE

10. Добавление срока жизни в заголовки.

Для выполнения этого действия используйте следующий код.

#Добавление срока жизни в заголовки.

Header set Expires «Wed, 12 Dec 2011 01:00:00 GMT»

11. Установка страницы по-умолчанию.

Обычно страницей по умолчанию является index.html/php. С помощью данного кода можно настроить по-умолчанию любую страницу.

#Установка страницы по-умолчанию

DirectoryIndex test.php

12. Защита паролем папок и файлов.

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

#защита паролем файла

AuthType Basic

AuthName «Prompt»

AuthUserFile /var/www/download.openlib.org.ua/.htpasswd

Require valid-user

# защита паролем папки

resides

AuthType basic

AuthName «This directory is protected»

AuthUserFile /var/www/download.openlib.org.ua/.htpasswd

AuthGroupFile /dev/null

Require valid-user

Для того, чтобы организовать доступ к файлу по паролю, необходимо создать файл .htpasswd и внести в него пару логин-пароль в формате user:password.

Но, в таком случае пароль будут в открытом виде, что не безопасно. Поэтому, воспользуйтесь консольной командой htpasswd:

htpasswd -c /var/www/download.openlib.org.ua/.htpasswd user

где /var/www/download.openlib.org.ua/.htpasswd путь к файлу и сам файл

user пользователь которого мы создаем. Вводим нужный пароль два раза и все готово.

Ну или воспользуйтесь онлайн сервисами для генерации хешированых паролей.

14. Усиление кеширования.

Использование данного правила не означает прямое ускорение загрузки вашего сайта. Оно предназначено для более быстрой загрузки сайта для уже заходившего на него пользователя, путем отправки статуса 304 для тех элементов, которые не обновлялись. Таким образом, при повторной загрузке страницы браузер посетителя не будет заново скачивать изображения, скрипты или CSS, а выведет те файлы, которые уже хранятся в его кеше. Можно изменять срок жизни кеша, путем корректирования его значения в пределах от секунд (seconds ) до года (year). В примере указан 1 год.

#Усиление кеширования

FileETag MTime Size

ExpiresActive on

ExpiresDefault «access plus 1 year»

15. Сжатие компонентов сайта с помощью Gzip.

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

#Сжатие компонентов сайта с помощью Gzip.

AddOutputFilterByType DEFLATE text/html text/plain text/xml application/xml application/xhtml+xml text/javascript text/css application/x-javascript

BrowserMatch ^Mozilla/4 gzip-only-text/html

BrowserMatch ^Mozilla/4.0[678] no-gzip

BrowserMatch bMSIE !no-gzip !gzip-only-text/html

Необходимо учитывать, что включение компрессии приведет к большей нагрузке на процессор сервера

16. Удаление «category» из URL

Для изменения ссылки с http://download.openlib.org.ua/category/whight на http://download.openlib.org.ua/whight, добавьте в конец файла .htaccess следующий код.

#Удаляем category из URL

RewriteRule ^category/(.+)$ http://www.download.openlib.org.ua/$1 [R=301,L]

download.openlib.org.ua — доменное имя вашего сайта.

17. Запрет на просмотр содержимого папки.

Для того, что бы обеспечить безопасность сервера и ограничить доступ к директориям, которые могут содержать конфиденциальную информацию, используйте данный код.

#Запрет на просмотр содержимого папки

Options All -Indexes

18. Запрет комментариев от пользователей без Referrer.

Чаще всего спам-боты обращаются напрямую к файлу wp-comments-post.php, не заходя на страницы записей блога. Данный код позволит заблокировать комментарии, отправленные пользователями, пришедшими «ниоткуда», позволяя комментировать тем читателям, которые перешли на страницу с вашего блога или с какой-то другой страницы (например по запросу в поисковой системе).

#Запрещаем комментарии от пользователей без Referrer

RewriteEngine On

RewriteCond %{REQUEST_METHOD} POST

RewriteCond %{REQUEST_URI} .wp-comments-post\.php*

RewriteCond %{HTTP_REFERER} !.*download.openlib.org.ua.* [OR]

RewriteCond %{HTTP_USER_AGENT} ^$

RewriteRule (.*) ^http://%{REMOTE_ADDR}/$ [R=301,L]

19. Изменение расширения файла в URL

С помощью данного кода можно удалить или изменить расширение файла (например вместо .php, можно написать .html) в URL-адресе страницы.

#Изменение расширения файла в URL

RewriteRule ^(([^/]+/)*[^.]+)$ /$1.php [L]

20. Защита сайта

Следующий код позволяет защитить сайт от script enjection и нежелательных модификаций _REQUEST или GLOBALS.

#Отслеживание сим-ссылок

Options +FollowSymLinks

#Запускаем url_rewriting

RewriteEngine On

#Блокирование ссылок, содержащих

RewriteCond %{QUERY_STRING} (\|%3E) [NC,OR]

#Блокирование скриптов, которые пытаются изменить переменные PHP Globals:

RewriteCond %{QUERY_STRING} GLOBALS(=|\[|\%[0-9A-Z]{0,2}) [OR]

#Блокирование скриптов, которые пытаются изменить переменную _REQUEST:

RewriteCond %{QUERY_STRING} _REQUEST(=|\[|\%[0-9A-Z]{0,2})

#Перенаправление всех подобных на страницу с ошибкой 403 — запрещено

RewriteRule ^(.*)$ index.php [F,L]

Эти простые 20 примеров, которые помогут вам для редиректа htaccess, ограничения доступа htaccess и для создания файлов ошибок, таких как 301, 401, 403