Htaccess (HyperText Access) — это простой файл конфигурации, который позволяет дизайнерам, разработчикам и программистам изменять конфигурацию веб-сервера Apache, чтобы обеспечить дополнительную функциональность. Такая функциональность может включать перенаправление пользователей, перезапись URL-адресов и предоставление защищенных паролем каталогов; но это может сделать намного больше.
Итак, начнем …
Создание и загрузка файла .htaccess
Создать файл .htaccess очень просто.
Просто откройте Блокнот или аналогичную текстовую программу, отключите перенос слов, добавьте код и сохраните файл обычным способом.
Например, вы можете назвать это:
htaccess.txt
Загрузите файл в соответствующий каталог на вашем веб-сервере, а затем переименуйте его так:
.htaccess
Помните, что файл .htaccess должен использовать разрешения 644 и загружаться в режиме ASCII. Если ваш файл .htaccess не работает, вам следует обратиться к системному администратору или компании, предоставляющей веб-хостинг, и убедиться, что они включили «.htaccess» в вашей учетной записи, поскольку некоторые компании, предоставляющие веб-хостинг, не разрешают его использование без предварительного разрешения. К сожалению, .htaccess не будет работать на серверах под управлением Windows.
Использование .htaccess
Важно помнить, что файл .htaccess влияет на каталог, в котором он находится, и на все полученные подкаталоги. Поэтому, если вы добавите ваш файл «.htaccess» в «корень веб-сайта», это повлияет на все последующие папки следующим образом:
http://www.yourdomain.com/ | - directory1 | - directory2 | - directory3 | | - directory3 / childdirectory1 | | - directory3 / childdirectory2 | - .htaccess | - index.html
Однако если вы поместите файл «.htaccess» в http://www.yourdomain.com/directory1, то функции «.htaccess» будут ограничены только этой папкой и всеми дочерними папками. Например:
http://www.yourdomain.com/ | - directory1 | | - directory1 / childdirectory1 | | - directory1 / childdirectory2 | | - directory1 / childdirectory3 | | | - directory1 / childdirectory3 / newdirectory1 | | | - directory1 / childdirectory3 / newdirectory2 | | - .htaccess | | - index.html
После многократного редактирования файла .htaccess он может показаться немного сложным, поэтому я рекомендую добавить комментарии. Для этого просто поместите символ хеша в начале каждой строки следующим образом:
# комментарий здесь # еще один комментарий здесь
Полезные фрагменты
И, чтобы начать, пришло время фрагмента …
(хотя один или два из них являются строго директивами для Apache)
Указатель каталога
Вы можете изменить индексный файл каталога по умолчанию с помощью:
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 в Вашем URL
Сделайте ваш сайт непротиворечивым, убрав необходимость в «www», используя:
RewriteEngine On RewriteBase / RewriteCond% {HTTP_HOST} ^ www.yourdomain.com [NC] RewriteRule ^ (. *) $ Http://yourdomain.com/$1 [L, R = 301]
Установите часовой пояс для вашего сервера
SetEnv TZ Европа / Лондон
Контроль доступа к файлам
Большинство людей помнят, что .htaccess чаще всего используется для ограничения или запрета доступа к отдельным файлам и папкам, и вы можете сделать это следующим образом:
отрицать все
Однако, если вы хотите быть более конкретным и запретить определенный IP-адрес, вы можете использовать:
заказ разрешить, отказать отрицать из XXX.XXX.XXX.XXX разрешить от всех
или в качестве альтернативы для нескольких IP-адресов вы можете использовать:
разрешить от всех отказать от 145.186.14.122 отрицать с 124.15
301 постоянных перенаправлений
Беспокоитесь о тех старых ссылках? Тогда попробуйте:
Redirect 301 /olddirectory/file.html http://www.domainname.com/newdirectory/file.html
Установите адрес электронной почты для администратора сервера
Используя следующий код, вы можете указать адрес электронной почты по умолчанию для администратора сервера:
ServerSignature EMail SetEnv SERVER_ADMIN [email protected]
Обнаружение планшетов и перенаправление
Если вы хотите перенаправить пользователей планшета на определенную веб-страницу или каталог, попробуйте:
RewriteCond% {HTTP_USER_AGENT} ^. * IPad. * $ RewriteRule ^ (. *) $ Http://yourdomain.com/folderfortts [R = 301] RewriteCond% {HTTP_USER_AGENT} ^. * Android. * $ RewriteRule ^ (. *) $ Http://yourdomain.com/folderfortts [R = 301]
Защита ссылок
Заинтересованы в хотлинкинге или просто хотите сократить использование полосы пропускания? Попробуйте поэкспериментировать с:
Опции + FollowSymlinks 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 / октет-поток .csv Приложение AddType / октет-поток .xls Приложение AddType / октет-поток .doc Приложение AddType / октет-поток .avi Приложение AddType / октет-поток .mpg Приложение AddType / октет-поток .mov Приложение AddType / октет-поток .pdf
или вы упрощаете это как:
Приложение AddType / октет-поток .avi .mpg .mov .pdf .xls .mp4
Переписать URL
Если вы хотите сделать свои URL-адреса немного удобнее для чтения (например, изменив content.php? Id = 92 на content-92.html), вы можете реализовать следующие правила перезаписи:
ПереписатьEngine на RewriteRule ^ content - ([0-9] +). Html $ content.php? Id = $ 1
Перенаправить браузер на https
Это всегда полезно для тех, кто только что установил SSL-сертификат:
RewriteEngine On RewriteCond% {HTTPS}! On RewriteRule (. *) Https: //% {HTTP_HOST}% {REQUEST_URI}
Активировать SSI
Если вы хотите активировать SSI для типов файлов HTML и SHTML, попробуйте:
AddType text / html .html AddType text / html .shtml AddHandler, проанализированный сервером .html AddHandler-серверный .shtml AddHandler анализирует сервер .htm
Отключить или включить просмотр каталогов
# отключить просмотр каталога Опции Все Индексы # включить просмотр каталогов Опции Все + Индексы
Изменить заголовки Charset и Language
Для тех, кто хочет изменить текущий набор символов и язык для конкретного каталога, используйте:
AddDefaultCharset UTF-8 DefaultLanguage en-GB
Блокировать нежелательных рефералов
Если вы хотите заблокировать нежелательных посетителей с определенного веб-сайта или ряда веб-сайтов, вы можете использовать:
<IfModule mod_rewrite.c> ПереписатьEngine на 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 Запретить от env = HTTP_SAFE_BADBOT </ IfModule>
Блокировать доступ к широкому кругу файлов
Если вы хотите защитить определенные файлы или даже заблокировать доступ к файлу .htaccess, попробуйте настроить следующий код:
<Files privatefile.jpg> заказ разрешить, отказать отрицать все </ Files> <FilesMatch ". (Htaccess | htpasswd | ini | phps | fla | psd | log | sh) $"> Заказать Разрешить, Запретить Отрицать все </ FilesMatch>
И наконец …
Из соображений безопасности я думаю, что возможность переименовать файл .htaccess очень полезна:
AccessFileName ht.access
При написании этой статьи я попытался выделить диапазон функций, для которых может использоваться htaccess. Конечно, я не охватил все, но, как вы видите, .htaccess может быть старым инструментом, но он все еще играет важную роль в улучшении вашего сайта.