Htaccess (HyperText Access) представляет собой простой файл конфигурации, который позволяет дизайнерам, разработчикам и программистам, изменять конфигурацию веб-сервера Apache, чтобы реализовать дополнительную функциональность.
Возможности файла .htaccess может включать в себя перенаправления пользователей, изменение URL, обеспечение защиты паролем директорий и многое другое
Итак, начнем...
Создать файл .htaccess очень просто. Откройте Блокнот или аналогичный текстовый редактор, добавьте код и сохраните файл как обычно вы это делаете.
Например, вы можете назвать его:
htaccess.txt
Затем загрузите файл в соответствующий каталог на вашем веб-сервере и переименуйте его:
.htaccess
Помните, что для файла .htaccess следует использовать права доступа 644 и загружать его в ASCII-режиме. Если ваш .htaccess файл не работает, то вам следует обратиться к системному администратору или в техподдержку вашего веб-хостинга и убедиться, что использование его разрешено для вашей учетной записи, так как некоторые хостинговые компании не позволяют его использование без предварительного разрешения, это в основном относится к бесплатным хостингам. Также, к сожалению, .htaccess не будет работать на Windows-серверах.
Важно помнить, что файл .htaccess будет влиять на каталог в котором он находится, и на все подкаталоги. Поэтому, если вы добавили свой файл .htaccess в корневой каталог веб-сайта, то это повлияет на все имеющиеся на сайте папки:
https://www.yourdomain.com/ | -- directory1 | -- directory2 | -- directory3 | | -- directory3/childdirectory1 | | -- directory3/childdirectory2 | -- .htaccess | -- index.html
Однако, если вы поместите файл .htaccess в директорию https://www.yourdomain.com/directory1, то функциональность .htaccess будет ограничена этой папкой и всеми вложенныеми в неё папками. Например:
https://www.yourdomain.com/ | -- directory1 | | -- directory1/childdirectory1 | | -- directory1/childdirectory2 | | -- directory1/childdirectory3 | | | -- directory1/childdirectory3/newdirectory1 | | | -- directory1/childdirectory3/newdirectory2 | | -- .htaccess | | -- index.html
При большом количестве правил в этом файле я рекомендую использовать комментарии. Для этого просто разместите символ # в начале каждой строки следующим образом:
# Комментарий # Следующий комментарий
Приведем примеры нескольких полезных фрагментов кода, которые, наверняка, пригодятся при создании сайта.
Вы можете изменить файл, который открывается по умолчанию в каталоге, обычно это файл с именем index (index.html, index.php и т.д.):
DirectoryIndex welcome.html welcome.php
Вы можете перенаправить пользователей на собственную страницу ошибок при их возникновении:
ErrorDocument 404 error.html
Вы можете для каждого типа ошибки сделать свою страницу:
ErrorDocument 400 /400.html 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" из адреса вашего сайта, используйте следующий код:
RewriteEngine On RewriteBase / RewriteCond %{HTTP_HOST} ^www.yourdomain.com [NC] RewriteRule ^(.*)$ https://yourdomain.com/$1 [L,R=301]
SetEnv TZ Europe/London
Файл .htaccess наиболее часто используется, чтобы ограничить или запретить доступ к отдельным файлам и папкам, и вы можете сделать это следующим образом:
deny from all
Однако, если вы хотите запретить доступ конкретному IP-адресу, то вы можете использовать этот код:
order allow,deny deny from XXX.XXX.XXX.XXX allow from all
или для нескольких IP-адресов, вы можете написать так:
allow from all deny from 145.186.14.122 deny from 124.15
Вы изменили адреса страниц, но не хотите терять посетителей? Тогда попробуйте:
Redirect 301 /olddirectory/file.html https://www.domainname.com/newdirectory/file.html
С помощью следующего кода вы можете указать адрес электронной почты, по умолчанию, для администратора сервера:
ServerSignature EMail SetEnv SERVER_ADMIN webmaster@domain.com
Если вы хотите, например, перенаправить пользователей использующих планшет к определенной веб-странице или каталогу, то можно использовать следующие правила:
RewriteCond %{HTTP_USER_AGENT} ^.*iPad.*$ RewriteRule ^(.*)$ https://yourdomain.com/folderfortablets [R=301] RewriteCond %{HTTP_USER_AGENT} ^.*Android.*$ RewriteRule ^(.*)$ https://yourdomain.com/folderfortablets [R=301]
Если вы не хотите, чтобы картинки с вашего сайта использовали на других сайтах или просто хотите уменьшить трафик. Поэкспериментируйте с этим кодом:
Options +FollowSymlinks RewriteEngine On RewriteCond %{HTTP_REFERER} !^$ RewriteCond %{HTTP_REFERER} !^https://(www.)?domainname.com/ [nc] RewriteRule .*.(gif|jpg|png)$ https://domainname.com/img/hotlink_f_o.png [nc]
Если вы хотите заставить пользователей загружать определенные типы файлов, а не просматривать их в браузере, то вы можете использовать это:
AddType application/octet-stream .csv 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
или упростить это так:
AddType application/octet-stream .avi .mpg .mov .pdf .xls .mp4
Если вы хотите, чтобы ваши ссылки было немного легче читать (т.е. изменить content.php?id=92 на content-92.html), Вы могли бы реализовать следующие правила «переписывания»:
RewriteEngine on RewriteRule ^content-([0-9]+)\.html$ content.php?id=$1
Это всегда полезно для тех, кто только что установил SSL-сертификат:
RewriteEngine On RewriteCond %{HTTPS} !on RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}
Если вы хотите активировать SSI для HTML и SHTML-файлов, то попробуйте:
AddType text/html .html AddType text/html .shtml AddHandler server-parsed .html AddHandler server-parsed .shtml AddHandler server-parsed .htm
# отключаем просмотр каталогов Options All -Indexes # разрешаем просмотр каталогов Options All +Indexes
Для тех, кто хочет изменить текущую кодировку и язык:
AddDefaultCharset UTF-8 DefaultLanguage en-GB
Если вы хотите заблокировать нежелательных посетителей переходящих с определенного веб-сайта или ряда сайтов, то вы можете использовать:
<IfModule mod_rewrite.c> RewriteEngine on RewriteCond %{HTTP_REFERER} website1.com [NC,OR] RewriteCond %{HTTP_REFERER} website2.com [NC,OR] RewriteRule .* - [F] </ifModule>
При помощи следующего метода, вы можете сохранить траффик путем блокирования определенных роботов и пауков, которые бродят по вашему сайту:
<IfModule mod_rewrite.c> 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, то используйте следующий код:
<Files privatefile.jpg> order allow,deny deny from all </Files> <FilesMatch ".(htaccess|htpasswd|ini|phps|fla|psd|log|sh)$"> Order Allow,Deny Deny from all </FilesMatch>
И, наконец...
По соображениям безопасности, я думаю, очень полезно переименовать файл .htaccess:
AccessFileName ht.access
При написании этой статьи я постарался выделить ряд функций .htaccess, которые могут быть полезны для вебмастера. Конечно, я не рассмотрел все возможности, но как вы видите .htaccess может быть полезным инструментом, и он по-прежнему играет важную роль в улучшении вашего сайта.
Источник© 2008 - 2024 Все права защищены
Новый комментарий