Инструкция для веб-мастеров: секреты настройки .htaccess файла
Файл .htaccess — это пользовательский файл для дополнительной настройки web-сервера Apache. Правила в .htaccess применяются для каталога, в котором он создан, и для всех его подкаталогов. Это позволяет добавить правила как и для всего сайта, так и для конкретного каталога. Как можно заметить, имя данного файла начинается с точки, что в unix-системах указывает на то, что файл является скрытым.
Основными преимуществами данной настройки являются:
- возможность пользователя самому настроить нужные правила web-сервера для сайта, не имея доступа суперпользователя;
- настройки в данном файле применяются мгновенно, без перезагрузки какой-либо службы;
- поскольку настройки .htaccess работают только для текущего каталога и его подкаталогов, ошибки в его синтаксисе не влияют на другие сайты и на работу web-сервера в целом.
Из минусов .htaccess можно отметить не самый дружелюбный синтаксис, который для начинающих может быть довольно сложным. Поэтому в данной статье мы рассмотрим основные директивы файла .htaccess и примеры правил с ними, которые сможет использовать любой пользователь без каких-либо знаний в синтаксисе .htaccess.
Шаг 1 – Редирект с http на https
Для перенаправления всех страниц сайта с http на https достаточно добавить правило в начало файла .htaccess, который расположен в корневой папке сайта.
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteCond %{REQUEST_URI} !robots.txt$
RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
Шаг 2 – Ограничение доступа к сайту
Данным правилом мы запретим доступ к сайту или к директории сайта, где .htaccess расположен с подобными правилами, для всех, кроме IP-адреса 123.123.123.123. По аналогии можно указывать несколько строк с IP-адресами, которым доступ нужно разрешить.
deny from all
allow from 123.123.123.123
Данным правилом мы наоборот закрываем доступ для конкретного IP-адреса 123.123.123.123:
deny from 123.123.123.123
Ограничение доступа к конкретному файлу, в примере файл cron.php:
<Files "cron.php">
deny fromm 123.123.123.123
</Files>
Если вышеуказанных директив нет, то посредством файла .htaccess доступ к сайту не ограничивается.
Шаг 3 – Редирект 301
Редирект 301 с главной страницы сайта на URL http://your_site.ua можно сделать таким образом. В данном примере и последующих, вместо your_site.ua нужно указать имя вашего сайта или нужный URL.
Redirect 301 / https://your_site.ua
Можно также использовать данное правило для любой директории сайта: для этого вместо / указываем нужную директорию, к примеру, /my_dir.
Redirect 301 /my_dir https://your_site.ua
Следующее правило используется для перенаправления всех страниц домена your_site.ua на соответствующие страницы другого домена your_new_site.ua. Данное правило нужно добавить в .htaccess сайта, со страниц которого должен быть редирект, в примере это your_site.ua:
RewriteCond %{HTTP_HOST} ^www\.your_site\.ua$ [NC]
RewriteRule ^(.*)$ http://your_new_site.ua/$1 [L,R=301]
RewriteCond %{HTTP_HOST} ^your_site\.ua$ [NC]
RewriteRule ^(.*)$ http://your_new_site.ua/$1 [L,R=301]
По аналогии с предыдущим правилом можно сделать редирект со всех страниц www.your_site.ua на такие же страницы your_site.ua, то есть это редирект с www на без www:
RewriteCond %{HTTP_HOST} ^www.(.*)$
RewriteRule ^(.*)$ https://%1/$1 [L,R=301]
И наоборот, с без www на такую же страницу с www:
RewriteCond %{HTTPS} off [OR]
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteCond %{HTTP_HOST} ^(?:www\.)?(.+)$ [NC]
RewriteRule ^ https://www.%1%{REQUEST_URI} [L,NE,R=301]
Это правило поможет избавиться от .html в конце URL страницы:
RewriteCond %{THE_REQUEST} /([^.]+)\.html [NC]
RewriteRule ^ /%1 [NC,L,R=301]
RewriteCond %{REQUEST_FILENAME}.html -f
RewriteRule ^ %{REQUEST_URI}.html [NC,L]
Еще можно убрать / в конце URL:
RewriteEngine on
RewriteRule (.+)/$ /$1 [L,R=301]
Или добавить / в конце URL, который не заканчиваются на / :
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !(.*)/$
RewriteRule ^(.*[^/])$ $1/ [L,R=301]
Шаг 4 – Кодировка сайта
В .htaccess также можно принудительно установить кодировку для сайта используя директиву AddDefaultCharset и передавая ей один параметр — желаемую кодировку, к примеру:
AddDefaultCharset UTF-8
или
AddDefaultCharset WINDOWS-1251
Или можно отключить установку кодировки web-сервером использую директиву:
CharsetDisable on
Шаг 5 – Переопределение страниц ошибок
Эти правила заменят стандартные страницы ошибок на указанные пользовательские страницы. Ссылка http://your_site.ua/error_page_404.html — и другие нужно заменить на ваши ссылки страниц ошибок:
ErrorDocument 404 https://your_site.ua/error_page_404.html
ErrorDocument 403 https://your_site.ua/error_page_403.html
ErrorDocument 500 https://your_site.ua/error_page_500.html
Шаг 6 – Указание нестандартного индексного файла
При открытии любого веб-сайта сервер ищет в корневой папке индексный файл, который по умолчанию задан как index.php или index.html. В случае, если наш индексный файл отличается от заданных по умолчанию, и называется, к примеру, main.php, мы можем это указать в .htaccess директивой:
DirectoryIndex main.php
Вывод
В данной статье рассмотрены примеры наиболее часто используемых правил .htaccess, которые будут полезны как и опытному разработчику, так и новичку в этой сфере. Но это далеко не все возможности конфигурации в .htaccess. В настоящее время использование файла .htaccess не является большой проблемой, поскольку практически все хостинги в своём программном обеспечении используют Apache и поддерживают настройки при помощи .htaccess. Потому данная тема уже много лет остается актуальной и информацию об этом легко можно найти на многих интернет ресурсах. Если возникает задача что-либо настроить при помощи .htaccess — скорее всего это уже кто-то делал, и можно просто найти готовое решение. Если же реализовать нужную настройку .htaccess вам не удалось, обращайтесь в нашу поддержку и мы найдём решение вместе.
Возможно, вас заинтересует
Причины возникновения ошибки 502. Как ее исправить?
Ошибки 5хх означают проблемы на стороне сервера. Если говорить конкретно об ошибке 502, то...
Обновлено: 30.10.2024
|Причины возникновения ошибки 403. Как исправить?
Для большинства пользователей интернета не слишком принципиально, почему они не могут попасть на сайт....
Обновлено: 23.10.2024
|Причины возникновения ошибки 508. Как исправить?
Ошибка 508: Resource Limit Is Reached обычно означает, что ваша учетная запись превысила назначенные...
Обновлено: 15.10.2024
|Как вставить картинку в HTML и оптимизировать ее для лучшего ранжирования в Google
Согласитесь, визуальные эффекты играют важную роль в создании привлекательного и функционального интерфейса. В этой...
Обновлено: 26.09.2024
|
Наш телеграм
с важными анонсами, розыгрышами и мемами
Присоединиться