Htaccess (HyperText Access) представляет собой простой файл конфигурации, который позволяет дизайнерам, разработчикам и программистам, изменять конфигурацию веб-сервера Apache, чтобы реализовать дополнительную функциональность. Такая функциональность может включать в себя перенаправления пользователей, изменение URL, обеспечение защиты паролем директорий и многое другое
Итак, начнем ...
Создание и загрузка файла .htaccess
Создать файл .htaccess очень просто.
Откройте Блокнот или аналогичный текстовый редактор, добавьте код и сохраните файл как обычно вы это делаете.
Например, вы можете назвать его:
Затем загрузите файл в соответствующий каталог на вашем веб-сервере и переименуйте его:
Помните, что для файла .htaccess следует использовать права доступа 644 и загружать его в ASCII-режиме. Если ваш .htaccess файл не работает, то вам следует обратиться к системному администратору или в техподдержку вашего веб-хостинга и убедиться, что использование его разрешено для вашей учетной записи, так как некоторые хостинговые компании не позволяют его использование без предварительного разрешения, это в основном относится к бесплатным хостингам. Также, к сожалению, .htaccess не будет работать на Windows-серверах.
Использование .htaccess
Важно помнить, что файл .htaccess будет влиять на каталог в котором он находится, и на все подкаталоги. Поэтому, если вы добавили свой файл .htaccess в корневой каталог веб-сайта, то это повлияет на все имеющиеся на сайте папки:
| -- directory1
| -- directory2
| -- directory3
| | -- directory3/childdirectory1
| | -- directory3/childdirectory2
| -- .htaccess
| -- index.html
Однако, если вы поместите файл .htaccess в директорию http://www.yourdomain.com/directory1, то функциональность .htaccess будет ограничена этой папкой и всеми вложенныеми в неё папками. Например:
| -- directory1
| | -- directory1/childdirectory1
| | -- directory1/childdirectory2
| | -- directory1/childdirectory3
| | | -- directory1/childdirectory3/newdirectory1
| | | -- directory1/childdirectory3/newdirectory2
| | -- .htaccess
| | -- index.html
При большом количестве правил в этом файле я рекомендую использовать комментарии. Для этого просто разместите символ # в начале каждой строки следующим образом:
# следующий комментарий
Полезные сниппеты
Приведем примеры нескольких полезных фрагментов кода, которые, наверняка, пригодятся при создании сайта.
Directory Index
Вы можете изменить файл, который открывается по умолчанию в каталоге, обычно это файл с именем index (index.html, index.php и т.д.):
Пользовательские страницы ошибок
Вы можете перенаправить пользователей на собственную страницу ошибок при их возникновении:
Вы можете для каждого типа ошибки сделать свою страницу:
ErrorDocument 401 /401.html
ErrorDocument 403 /403.html
ErrorDocument 404 /404.html
ErrorDocument 500 /500.html
ErrorDocument 502 /502.html
ErrorDocument 504 /504.html
Только не забудьте предварительно создать страницы ошибок!
Удаляем WWW из адреса сайта
Чтобы удалить "WWW" из адреса вашего сайта, используйте следующий код:
RewriteBase /
RewriteCond %{HTTP_HOST} ^www.yourdomain.com [NC]
RewriteRule ^(.*)$ http://yourdomain.com/$1 [L,R=301]
Установка часового пояса для сервера
Управление доступом к файлам
Файл .htaccess наиболее часто используется, чтобы ограничить или запретить доступ к отдельным файлам и папкам, и вы можете сделать это следующим образом.:
Однако, если вы хотите запретить доступ конкретному IP-адресу, то вы можете использовать этот код:
deny from XXX.XXX.XXX.XXX
allow from all
или для нескольких IP-адресов, вы можете написать так:
deny from 145.186.14.122
deny from 124.15
301 Permanent Redirects
Вы изменили адреса страниц, но не хотите терять посетителей? Тогда попробуйте:
Установить адрес электронной почты администратора сервера
С помощью следующего кода вы можете указать адрес электронной почты, по умолчанию, для администратора сервера:
SetEnv SERVER_ADMIN <span id="cloak80c156dc54ce8b46c6bb9e75363a8988">Адрес электронной почты защищен от спам-ботов. Для просмотра адреса в вашем браузере должен быть включен Javascript.</span><script type='text/javascript'>
document.getElementById('cloak80c156dc54ce8b46c6bb9e75363a8988').innerHTML = '';
var prefix = 'ma' + 'il' + 'to';
var path = 'hr' + 'ef' + '=';
var addy80c156dc54ce8b46c6bb9e75363a8988 = 'webmaster' + '@';
addy80c156dc54ce8b46c6bb9e75363a8988 = addy80c156dc54ce8b46c6bb9e75363a8988 + 'domain' + '.' + 'com';
var addy_text80c156dc54ce8b46c6bb9e75363a8988 = 'webmaster' + '@' + 'domain' + '.' + 'com';document.getElementById('cloak80c156dc54ce8b46c6bb9e75363a8988').innerHTML += '<a ' + path + '\'' + prefix + ':' + addy80c156dc54ce8b46c6bb9e75363a8988 + '\'>'+addy_text80c156dc54ce8b46c6bb9e75363a8988+'<\/a>';
</script>
Определение типа устройства и перенаправление
Если вы хотите, например, перенаправить пользователей использующих планшет к определенной веб-странице или каталогу, то можно использовать следующие правила:
RewriteRule ^(.*)$ http://yourdomain.com/folderfortablets [R=301]
RewriteCond %{HTTP_USER_AGENT} ^.*Android.*$
RewriteRule ^(.*)$ http://yourdomain.com/folderfortablets [R=301]
Защита от хотлинкинга
Если вы не хотите, чтобы картинки с вашего сайта использовали на других сайтах или просто хотите уменьшить трафик. Поэкспериментируйте с этим кодом:
RewriteEngine On
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://(www.)?domainname.com/ [nc]
RewriteRule .*.(gif|jpg|png)$ http://domainname.com/img/hotlink_f_o.png [nc]
Вызываем окно "Файл Сохранить как"
Если вы хотите заставить пользователей загружать определенные типы файлов, а не просматривать их в браузере, то вы можете использовать это:
AddType application/octet-stream .xls
AddType application/octet-stream .doc
AddType application/octet-stream .avi
AddType application/octet-stream .mpg
AddType application/octet-stream .mov
AddType application/octet-stream .pdf
или упростить это так:
Rewrite URL
Если вы хотите, чтобы ваши ссылки было немного легче читать (т.е. изменить content.php?id=92 на content-92.html), Вы могли бы реализовать следующие правила «переписывания»:
RewriteRule ^content-([0-9]+)\.html$ content.php?id=$1
Перенаправление браузера на HTTPS
Это всегда полезно для тех, кто только что установил SSL-сертификат:
RewriteCond %{HTTPS} !on
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}
Включаем SSI
Если вы хотите активировать SSI для HTML и SHTML-файлов, то попробуйте:
AddType text/html .shtml
AddHandler server-parsed .html
AddHandler server-parsed .shtml
AddHandler server-parsed .htm
Включение и отключение просмотра каталогов
Options All -Indexes
# разрешаем просмотр каталогов
Options All +Indexes
Изменение кодировки и языка заголовков
Для тех, кто хочет изменить текущую кодировку и язык:
DefaultLanguage en-GB
Блокировка нежелательных поситителей
Если вы хотите заблокировать нежелательных посетителей переходящих с определенного веб-сайта или ряда сайтов, то вы можете использовать:
RewriteEngine on
RewriteCond %{HTTP_REFERER} website1.com [NC,OR]
RewriteCond %{HTTP_REFERER} website2.com [NC,OR]
RewriteRule .* - [F]
</ifModule>
Блокировка нежелательных ботов
При помощи следующего метода, вы можете сохранить траффик путем блокирования определенных роботов и пауков, которые бродят по вашему сайту:
SetEnvIfNoCase ^User-Agent$ .*(bot1|bot2|bot3|bot4|bot5|bot6|) HTTP_SAFE_BADBOT
SetEnvIfNoCase ^User-Agent$ .*(bot1|bot2|bot3|bot4|bot5|bot6|) HTTP_SAFE_BADBOT
Deny from env=HTTP_SAFE_BADBOT
</ifModule>
Заблокировать доступ к определенным файлам
Если вы хотите защитить определенные файлы, или даже заблокировать доступ к файлу .htaccess, то используйте следующий код:
order allow,deny
deny from all
</Files>
<FilesMatch ".(htaccess|htpasswd|ini|phps|fla|psd|log|sh)$">
Order Allow,Deny
Deny from all
</FilesMatch>
И, наконец ...
По соображениям безопасности, я думаю, очень полезно переименовать файл .htaccess:
При написании этой статьи я постарался выделить ряд функций .htaccess, которые могут быть полезны для вебмастера. Конечно, я не рассмотрел все возможности, но как вы видите .htaccess может быть полезным инструментом, и он по-прежнему играет важную роль в улучшении вашего сайта.
Перевод статьи с sitepoint.com
Если у Вас возникли вопросы, то для скорейшего получения ответа рекомендуем воспользоваться нашим форумом
Подробнее...