Статьи

.htaccess для всех

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 может быть старым инструментом, но он все еще играет важную роль в улучшении вашего сайта.