Sprinthost – Инструкции файла .htaccess

Sprinthost – знакомство с хостингом

Укажите тот домен, который планируете использовать на хостинге.

Если делаете заказ с регистрацией домена — это важно, поскольку после пополнения счета домен сразу зарегистрируется, отменить это будет нельзя. Если хостинг нужен, но с доменом не определились, не пополняйте счет, пока не замените тестовый домен тем, на котором будете размещать сайт. Тестовый домен предварительно нужно будет удалить.

Если переносите сайты к нам — укажите любой из ваших доменов, остальные можно будет добавить в Панели управления после создания аккаунта. До момента, пока вы не измените NS-серверы доменов на наши, «сами» они к нам не перенесутся.

Sprinthost – инструкции файла .htaccess

Файл .htaccess позволяет изменять некоторые настройки веб-сервера Apache (например, перенаправление) и опции PHP для сайта, поддомена или вложенной директории без изменения конфигурационного файла Apache или php.ini. Директивы, указанные в файле .htaccess, распространяются на саму директорию, в которой находится .htaccess, и на все вложенные, в том числе и на поддомены.

Как правило, файл .htaccess создается в  корневой директории сайта или в тех, которые требуют специфического поведения веб-сервера (запрет отображения списка файлов, обработка статических файлов, авторизация и прочее). Если файл .htaccess отсутствует в корне сайта, создайте его через Файловый менеджер Панели управления или загрузите с локального компьютера при помощи FTP-клиента.

При редактировании файла .htaccess будьте предельно внимательны: неверно указанные директивы и посторонние символы могут привести к внутренней ошибке сервера (500 Internal Server Error).

Простое правило перенаправления задается директивой Redirect, в которой содержится код ответа, источник перенаправления и целевая страница. Чтобы перенаправить запрос посетителя с главной страницы вашего сайта на другой домен, добавьте в файл .htaccess сайта директиву:

Redirect 301 / http://example.com/

В случае, если перенаправление носит временный характер, перенаправить запрос со страницы blog на другую страницу того же сайта new-blog можно вот так:

Redirect 302 /blog /new-blog/index.php

Простые правила перенаправления вы можете создавать автоматически при помощи раздела «Перенаправления» в Панели управления хостингом при переходе к управлению сайтом. Более сложные правила (с условиями и дополнительными параметрами) составляются при помощи модуля Apache mod_rewrite. Использование этого модуля позволяет решить широкий спектр задач, примеры некоторых мы рассмотрим ниже.

Защита SSL-сертификатом обязывает сайт всегда работать только по протоколу HTTPS. Данное правило перенаправляет запросы, поступившие от посетителей сайта, с HTTP на HTTPS:

RewriteEngine on
RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301,NE]

Поместите это правило как можно выше в файле .htaccess, чтобы другие правила перенаправления не помешали ему. Руководство по правильному переводу сайта на работу по протоколу HTTPS вы можете найти в статье.

Если у вашего сайта несколько имен, но вы хотите, чтобы пользователи всегда видели в адресной строке определенное имя сайта (в данном примере это www), добавьте в файл .htaccess в корне вашего сайта следующие строки:

RewriteEngine on
RewriteCond %{HTTP_HOST} !^www.example.com$
RewriteRule ^(.*) http://www.example.com/$1 [R=301,L] 

Во второй строке правила содержится условие: все запросы, которые поступили не на имя www.example.com, перенаправлять на www.example.com. Чтобы конкретизировать правило (например, задать определенный домен, а не все, что подходят под условие), достаточно убрать восклицательный знак — он означает отрицание. Например, данное правило перенаправляет запросы с дополнительного домена alias.com на основной сайт site.ru:

Про сертификаты:  Установка и настройка snap-пакета Nextcloud в Ubuntu 16.04 | 8HOST.COM

RewriteEngine on
RewriteCond %{HTTP_HOST} ^alias.com$
RewriteRule ^(.*) http://site.ru/$1 [R=301,L] 

Поисковые системы при индексации сайта могут воспринимать ссылки со слешем (косая черта — /) и без него как разные страницы. А еще бывает, что при обращении к таким ссылкам открывается разное содержимое (например, example.com/shop/ — работает, а example.com/shop — отдает код 404). Чтобы устранить эти дубли страниц, примените к сайту эти правила перенаправления 301.

Добавить слеш ко всем страницам сайта можно при помощи правила:

RewriteEngine on
RewriteCond %{REQUEST_URI} !/$
RewriteCond %{REQUEST_URI} !.
RewriteRule ^(.*) %{REQUEST_URI}/ [R=301,L]

Это правило автоматически перенаправит поискового робота и посетителя, например, со страницы example.com/shop на example.com/shop/.

Чтобы наоборот убрать слеш в конце ссылок на страницы сайта, внесите в файл .htaccess следующие директивы:

RewriteEngine on
RewriteBase /
RewriteCond %{REQUEST_URI} /$ [NC]
RewriteRule ^(.*)(/)$ $1 [L,R=301]

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

RewriteCond %{REQUEST_URI} !admin/$

Добавьте эту строку в середину правила (под остальными RewriteCond) и измените имя директории из примера.

Посетители могут перейти по несуществующим ссылкам на вашем сайте и увидеть сформированное браузером сообщение: «HTTP 404 Not Found: The requested URL /123 was not found on this server». Вы можете создать свою собственную страницу такой ошибки. Для этого добавьте инструкцию в файл .htaccess:

ErrorDocument 404 /error404.html

Страницу ошибки error404.html поместите в ту папку, где находится сам .htaccess или укажите в директиве путь к файлу во вложенной папке. Собственные страницы ошибок можно создать и для ряда других ответов сервера: 500 (ошибка в скрипте), 403 (доступ запрещен), 401 (не авторизован) и т.д.

Временно закрыть сайт бывает нужно, например, во время обновления внешнего вида сайта. Подробно способы закрытия сайта средствами .htaccess мы разобрали в статье нашего блога. Рассмотрим наиболее популярные способы блокировки доступа ниже.

Простая директива, в которой указываются списки IP-адресов доступа и запрет для остальных, выглядит так:

order deny,allow
deny from all
allow from X.X.X.X 

Вместо X.X.X.X укажите ваш IP-адрес (проверить его можно, например, здесь). Обращения с других IP-адресов завершатся ошибкой 403 Forbidden.

Этот метод обычно требуется в случае, если доступ к сайту нужно запретить для роботов или программ, имеющих динамические IP-адреса. Подробно о User-Agent мы рассказали в статье нашего блога. Для блокировки достаточно в начало файла .htaccess добавить директивы:

RewriteEngine on
RewriteCond %{HTTP_USER_AGENT} example1 [NC,OR]
RewriteCond %{HTTP_USER_AGENT} example2 [NC]
RewriteRule .* - [F]

Вместо example1 и example2 укажите User-agent роботов или программ, доступ для которых требуется запретить.

Также можно перенаправлять посетителей на собственноручно созданную страницу с сообщением о проводимых технических работах. С указанного в условии (RewriteCond) IP-адреса сайт будет отображаться по-прежнему:

Про сертификаты:  Получение европейского сертификата соответствия - сертификация продукции СЕ “под ключ” в Москве и регионах России.

RewriteEngine on
RewriteCond %{REMOTE_ADDR} !^X.X.X.X$
RewriteCond %{REQUEST_URI} !^site-closed.html
RewriteRule ^.*$ site-closed.html

Страницу ошибки site-closed.html необходимо поместить в корневом каталоге сайта или указать в директиве путь к ней.

Для поддомена наследуются настройки .htaccess домена. Если в настройках .htaccess домена используются правила mod_rewrite, они могут приводить к некорректной работе поддомена. Добавьте в начало файла .htaccess поддомена следующую директиву:

RewriteEngine off

Это правило отключит mod_rewrite для вложенной директории поддомена.

При открытии директории без указания конкретного файла веб-сервер ищет индексные файлы index.html, index.php в порядке приоритета для отображения. Если индексные файлы отсутствуют, сервер возвращает ошибку 403 Forbidden, так как отображение списка файлов (листинг директорий) по умолчанию запрещено.

Чтобы установить в качестве индексного файла произвольный файл, следует добавить инструкцию:

DirectoryIndex имя_файла

Например, следующая инструкция предписывает веб-серверу при обращении к сайту открывать не страницу, а изображение example.jpg в папке pics сайта:

DirectoryIndex /pics/example.jpg

В настройках базового веб-сервера вы можете изменять все директивы PHP, значение графы Changeable для которых соответствует PHP_INI_PERDIR или PHP_INI_ALL. Эти настройки будут иметь силу на всех сайтах, которые работают на этом веб-сервере.

Управлять абсолютно всеми параметрами PHP вы можете на расширенном веб-сервере, редактируя php.ini через его настройки.

Чтобы установить индивидуальные параметры PHP для отдельного сайта, используйте файл .htaccess. Через него можно управлять всеми параметрами, доступными для изменения на базовом веб-сервере – примеры самых востребованных перечислены ниже.

По умолчанию отображение ошибок PHP на хостинге отключено. Для того чтобы видеть текст ошибок PHP на странице сайта, добавьте в файл .htaccess директиву:

php_value display_errors 1

Для того чтобы сохранять, изучать и исправлять ошибки включите их сбор и хранение с помощью следующих строк:

php_value error_log /home/login/domains/example.com/php_errors.log

Директория в пути расположения файла должна существовать, а если ее нет — обязательно создайте папку вручную. Файл журнала будет создан при появлении первой ошибки.

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

php_value memory_limit 512M

Вместо 512M укажите желаемый размер ограничения. Обратите внимание, что символ “M” (латинская M) указывается слитно со значением. Уточнить максимальное значение оперативной памяти, доступное по тарифу, можно в документе.

Чтобы увеличить время выполнения скриптов (в секундах), добавьте следующую директиву в .htaccess:

php_value max_execution_time 300

Вместо 300 укажите желаемый размер ограничения. Обратите внимание, что выполнение скрипта более чем в 10 минут (600 секунд) завершится ошибкой с кодом 504.

По умолчанию через сайт можно загрузить файл объемом не более 1Гб. Чаще этот размер даже меньше — 100Мб, из-за ограничения на объем запроса методом POST.

Если вам нужно загружать файлы бóльшего размера, либо же ограничить их объем (чтобы контролировать дисковую квоту), то управлять объемом загружаемого файла можно через .htaccess:

php_value post_max_size 200M
php_value upload_max_filesize 200M

Вместо 200M укажите желаемый размер ограничения. Обратите внимание, что символ “M” (заглавная латинская M) указывается слитно со значением.

Максимальный размер передаваемых переменных определяется с помощью следующей директивы:

Про сертификаты:  Сертификаты качества товаров

php_value max_input_vars 15000

Вместо 15000 укажите необходимый размер ограничения, который требует CMS сайта.

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

AddDefaultCharset "windows-1251"
php_value default_charset "windows-1251"

Вместо “windows-1251” подставьте подходящую кодировку, например, UTF-8. Проверить, в какой именно кодировке написан сайт, можно через инструменты используемого браузера. Если сайт не обрел корректный вид, обратитесь за помощью в службу технической поддержки.

Чтобы заставить интерпретатор PHP обрабатывать файлы с произвольным расширением, (например, .phtml), добавьте в файл .htaccess следующую строку:

AddType application/x-httpd-php .phtml

Изменение времени хранения сессий может потребоваться, если вы хотите, чтобы данные об авторизации пользователей на вашем сайте сохранялись дольше.

По умолчанию время хранения сессий — 1440 секунд (24 минуты). Для изменения этого значения добавьте в .htaccess следующие директивы:

php_value session.save_path /home/login/domains/example.ru/tmp
php_value session.gc_maxlifetime 604800
php_value session.cookie_lifetime 604800

Обратите внимание: при большом количестве посетителей и длительном времени сохранения сессий в папке, указанной в session.save_path, образуется большое количество файлов. Это может вызывать замедление сайта в момент очистки старых сессий и увеличивать количество потребляемых ресурсов. Альтернативные механизмы хранения и очистки сессий:

  1. Указывать вложенность директорий хранения сессий с помощью аргумента N в session.save_path и очищать старые сессии собственными скриптами (описание session.save_path в документации PHP).
  2. Реализовать собственный механизм хранения сессий (например, в MySQL) и установить его с помощью функции session_set_save_handler.

Директивы SSI (Server Side Includes) по умолчанию обрабатываются в файлах с расширением .shtml (например, index.shtml). Чтобы SSI обрабатывались и в других файлах, необходимо в файле .htaccess указать типы этих файлов:

AddType text/html .html .ssi
AddOutputFilter INCLUDES .html .ssi

Вместо “.ssi .html” укажите расширения файлов, в которых должны обрабатываться директивы SSI. Использовать в одном и том же файле PHP и SSI одновременно не рекомендуется.

Чтобы CGI/Perl-скрипты выполнялись в браузере, необходимо создать файл .htaccess и добавить в него строки:

Options ExecCGI
AddHandler cgi-script .cgi .pl
SetEnv PERL5LIB /home/login/perl5:/home/login/perl5/lib/perl5:/usr/local/lib/perl5
SetEnv LD_LIBRARY_PATH /home/login/perl5/lib

Вместо “.cgi .pl” укажите список расширений, которые должны обрабатываться веб-сервером. Убедитесь, что у вас есть права на исполнение этих скриптов (например, 755). А в переменных PERL5LIB и LD_LIBRARY_PATH, которые указывают веб-серверу, откуда подгружать модули Perl, вместо login вставьте свой логин.

Проектам на языке Python необходим файл .htaccess с таким содержанием:

DirectoryIndex site.wsgi
Options ExecCGI
AddHandler wsgi-script .wsgi
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /site.wsgi/$1 [QSA,PT,L]

Вместо site.wsgi укажите входной файл вашего приложения.

Чтобы обрабатывать скрипты Node.js, укажите в .htaccess следующие директивы:

SetEnv GHOST_NODE_VERSION_CHECK false
PassengerStartupFile app.js
PassengerResolveSymlinksInDocumentRoot on
Require all granted
PassengerAppType node
PassengerAppRoot /home/login/domains/example.com/public_html
Options -MultiViews 

Замените example.com на основное имя вашего сайта, а login на логин вашего аккаунта.

Если вы не нашли ответа на свой вопрос в этом разделе, то вы всегда можете обратиться к нам за помощью через форму обратной связи в разделе «Поддержка» Панели управления.

Оцените статью
Мой сертификат
Добавить комментарий