База знаний
Центр поддержки хостинга > Служба поддержки хостинг проектов > База знаний

Как настроить фаил .htaccess

Решение

Содержание статьи:

  • Синтаксис файла htaccess
  • Настройка доступа htaccess
  • Модификация URL в htaccess
  • Настройка редиректов в htaccess
  • Настройка страниц ошибок в htaccess
  • Кэширование в htaccess
  • Сжатие файлов в htaccess
  • Закрытие каталогов паролем
  • Кодировка
  • Версия PHP в нужной папке и изменение обработчика по типу файла

СИНТАКСИС ФАЙЛА HTACCESS

Все директивы из файла htaccess выполняются точно так же, как если бы они были размещены в глобальном конфигурационном файле, только внутри директивы <Directoryадрес_папки_htaccess>. Это не позволяет менять глобальные настройки, но вы можете очень тонко настроить поведение программы в папках, к которым у вас есть права доступа.

Общий синтаксис директив очень прост, это пары команд и их опций, разделенных пробелом, например:

Команда параметр1 параметр2 флаги

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

Зайдите на рабочий стол cPanel и зайдите  в раздел "Диспетчер файлов"

Перейдите в папку public_html и создайте фаил с именем ".htaccess

Создайте нужную папку и фаил .htaccess в папке public_html или выше. 

Включите отображение скрытых файлов, в разделе "Настройки" справа, сверху.

И отредактируйте файл .htaccess правой клавишей мыши нажав на файл и выбрав Edit

НАСТРОЙКА ДОСТУПА HTACCESS

Довольно часто htaccess используется для управления доступом к папке. Для управления доступом используются три команды:

  • order - порядок;
  • deny - запретить;
  • allow - разрешить.

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

Затем с помощью директивы allow или deny мы разрешаем или запрещаем доступ к папке с определенных адресов. Например, чтобы запретить все необходимо добавить в htaccess:

Order deny,allow
Deny from all

Но мы также можем разрешить доступ только с нужной подсети или IP адреса:

Order deny,allow
Deny from all
Allow 192.168.0.

Для блокировок IP адресов вы можете использовать возможности cPanel

Если указано deny,allow, то проверка будет выполняться в таком порядке. Сначала все директивы deny, затем все директивы allow, и если ни одно из условий не подошло, то запрос пропускается.При allow,deny такой запрос будет по умолчанию отклонен. Например, предыдущий пример можно написать так:

Order allow,deny
Allow 192.168.0.

МОДИФИКАЦИЯ URL В HTACCESS

Наиболее часто htaccess используется для модификации URL во время выполнения или редиректов. За эту функциональность отвечает модуль mod_rewrite и обычно он активирован в большинстве конфигураций Apache.

Модификация URL в htacces выполняется с помощью трех директив, это RewriteBase, которая указывает префикс адреса, RewriteCond проверяет соответствие, и RewriteRule - изменяет URL в соответствии с регулярным выражением если все правила соответствия подходят.

Сначала нужно включить Mod_Rewrite, на случай если модуль еще не активен:

RewriteEngine on

Укажем, что в качестве префикса для URL нужно использовать корень:

RewriteBase /

И будем автоматически заменять URL адреса с index.html на index.php, обратите внимание, что исходный URL - это путь к запрашиваемому файлу относительно расположения файла htaccess:

 

RewriteRule index.html /index.php

Для более эффективной замены можно использовать регулярные выражения они состоят из специальных символов и переменных и обычных символов и цифр. Рассмотрим основные специальные символы:

  • ^ - начало строки;
  • $ - конец строки;
  • . - любой символ;
  • * - любое количество любых символов;
  • ? - один определенный символ;
  • [0-9] - последовательность символов, например, от 0 до 9;
  • | - символ или, выбирается или одна группа, или другая;
  • () - иcпользуется для выбора групп символов.

В регулярных выражениях htaccess также можно использовать переменные с данными, полученными из заголовков запроса, например:

  • %{HTTP_USER_AGENT} - поле User-Agent, которое передает браузер пользователя;
  • %{REMOTE_ADDR} - IP адрес пользователя;
  • %{REQUEST_URI} - запрашиваемый URI;
  • %{QUERY_STRING} - параметры запроса после знака ?.

Это наиболее часто используемые переменные, но их есть намного больше, остальные вы можете найти в официальной документации. Регулярные выражения открывают более широкие возможности, например, вы можете заменять во всех страницах html на php:

RewriteEngine On;
RewriteBase /;
RewriteRule ^(.*)\.html$ $1.php

Директива RewriteCond дает еще больше гибкости, вы можете выбрать к каким адресам стоит применять модификацию, например, будем переопределять данные только для версии с www:

RewriteBase /;
RewriteCond % {REMOTE_HOST} ^www.site.ru$
RewriteRule ^(.*)\.html$ $1.php

Таким образом, вы можете выполнять любые преобразования ваших URL без фактических редиректов куда-либо. Но дальше мы рассмотрим как делать редиректы.

НАСТРОЙКА РЕДИРЕКТОВ В HTACCESS

Более подробно про редирект для SSL с http на https смотрите тут.

Подробная информация про редиректы тут. Так же вы можете использовать возможности cPanel для более простого управления редиректами.

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

Самый простой редирект можно выполнить без mod_rewrite, с помощью такой строки:

Redirect 301 /index.html http://www.site.ru/index.php

Но обычно нужны перенаправления с более широким действием. Все выглядит очень похоже, только теперь мы используем флаг [NC] чтобы не учитывать регистр, [L] для прекращения обработки и [R] - для редиректа. Например, перенаправление htaccess с версии без www на домен с www:

RewriteCond %{HTTP_HOST} ^site\.ru$ [NC]
RewriteRule ^(.*)$ http://www.site.ru/$1 [R=301,L]

Значение R=301 означает код редиректа, который будет возвращен клиенту, можно использовать 301, 302 и т д. Редирект htaccess с домена www на домен без префикса будет выглядеть так:

RewriteCond %{HTTP_HOST} ^www.site\.ru$ [NC]
RewriteRule ^(.*)$ http://site.ru/$1 [R=301,L]

Таким же образом можно сделать переадресацию:

RewriteRule ^старый_адрес /новый_адрес/$1 [R=301,L]

Редирект с http версии на https:

RewriteCond %{SERVER_PORT} ^80$ [OR]
RewriteCond %{HTTP} =on
RewriteRule ^(.*)$ https://site.ru/$1 [R=301,L]

или 

RewriteEngine On
RewriteCond %{SERVER_PORT} !^443$
RewriteRule .* https://%{SERVER_NAME}%{REQUEST_URI} [R,L]

НАСТРОЙКА СТРАНИЦ ОШИБОК В HTACCESS

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

Настройка htaccess для этого пункта будет очень полезной. Вы можете использовать директиву ErrorDocument. С помощью нее можно задать html страницы для ошибок 4хх и 5хх. Например, для 404:

ErrorDocument 404 http://site.ru/error/404.shtml
ErrorDocument 403 http://site.ru/error/403.shtml
ErrorDocument 401 http://site.ru/error/401.shtml
ErrorDocument 500 http://site.ru/error/500.shtml

Если страницы ошибок не срабатывают, смотрите информацию тут.

КЭШИРОВАНИЕ В HTACCESS

Браузер позволяет хранить в своем кэше изображения, файлы скриптов, стилей и другие медиафайлы определенное время. Время жизни кэша задается веб-сервером с помощью специальных заголовков. Их можно настроить с помощью модуля expires.

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

Сначала активируем модуль и устанавливаем период кэширования по умолчанию:

ExpiresActive On
ExpiresDefault "access plus 1 month"

Теперь мы можем настроить кэширование для каждого mime типа файлов:

ExpiresByType text/html "access plus 1 month 15 days 2 hours"
ExpiresByType image/gif "access plus 5 hours 3 minutes"
ExpiresByType image/x-icon "access plus 2592000 seconds"

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

  • image/x-icon;
  • image/jpeg;
  • image/png;
  • image/gif;
  • application/x-shockwave-flash;
  • text/css;
  • text/javascript;
  • application/javascript;
  • application/x-javascript;
  • text/html;
  • application/xhtml+xml;

Чтобы быть уверенным что эта конструкция не вызовет ошибок заключите ее в if:

<ifModule mod_expires.c>
</ifModule>

СЖАТИЕ ФАЙЛОВ В HTACCESS

Для сжатия в Apache можно использовать модуль deflate. Так же вы можете использовать возможности Cpanel, подробно тут

Здесь достаточно просто перечислить mime типы файлов, которые нужно сжать. Например:

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

Вы также можете заключить конструкцию if, чтобы проверить поддерживается ли этот модуль:

<ifModule mod_deflate.c>
</ifModule>

 

Закрытие каталогов паролем

Используйте раздел cPanel 

Кодировка

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

AddDefaultCharset UTF-8

Если Вам нужна windows-1251, то тогда так:


DefaultLanguage ru AddDefaultCharset windows-1251 php_value default_charset "cp1251"

 

Версия PHP в нужной папке и изменение обработчика по типу файла

Вы можете в нужной папке указать нужную версию php используя .htaccess. Также вы можете указать нужное расширение для обратки php кода. Например это будет  .html. Просто добавьте его в строку указав нужную версию php. Подробнее о смене версии php тут, о смене опции php тут.

AddType application/x-httpd-ea-php53-lsphp  .php5 .php4 .php .php3 .php2 .phtml .html 

Сохраните и в этой папке и выше по директориям у вас будет PHP 3 и будут обрабатываться .html файлы как php.

 

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

AddType  application/x-httpd-ea-php44-lsphp .php5 .php4 .php .php3 .php2 .phtml
AddType  application/x-httpd-ea-php51-lsphp .php5 .php4 .php .php3 .php2 .phtml
AddType  application/x-httpd-ea-php52-lsphp .php5 .php4 .php .php3 .php2 .phtml
AddType  application/x-httpd-ea-php53-lsphp .php5 .php4 .php .php3 .php2 .phtml
AddType  application/x-httpd-ea-php54-lsphp .php5 .php4 .php .php3 .php2 .phtml
AddType  application/x-httpd-ea-php55-lsphp .php5 .php4 .php .php3 .php2 .phtml
AddType  application/x-httpd-ea-php56-lsphp .php5 .php4 .php .php3 .php2 .phtml
AddType  application/x-httpd-ea-php70-lsphp .php5 .php4 .php .php3 .php2 .phtml
AddType  application/x-httpd-ea-php71-lsphp .php5 .php4 .php .php3 .php2 .phtml

 

по мотивам источника 

 
Была ли эта статья полезной? да / нет
Относящиеся статьи Как сменить версию PHP
Как указать кодировку через htaccess
Как сделать переадресацию с http на https
301-редирект: переадресация с одного домена на другой
У меня не работает моя страница ошибки 404
Сжатие ресурсов, страниц и другого контента с помощью gzip и deflate
Детали статьи
Идентификатор статьи: 78
Категория: Хостинг
Дата добавления: 2018-10-25 16:52:23
Просмотры: 73
Рейтинг (Голоса): Статья еще не получила оценку (0)

 
« Назад

 
Powered by Help Desk Software HESK, in partnership with SysAid Technologies

Подключайтесь в нашу группу VKontakte Подключайтесь в нашу группу Facebook Подключайтесь в наш канал Telegram Все секреты Доменов, Хостинга, Сайтов и IT Бизнеса.