Htaccess (кодировка): настройка, примеры использования
Каждый человек, занимаясь серфингом в интернете, набредал на такие веб-страницы и сайты, которые некорректно отображаются. Например, открыв какой-либо сайт, пользователь видит вместо понятного текста разнообразные закорючки, среди которых можно различить иероглифы, дуги, символы и другие знаки. Наиболее высока вероятность увидеть подобное при переходе на какой-либо китайский или японский сайт. Все это происходит из-за того, что там используются другие настройки в файле .htaccess. Кодировка в тех странах иная. Правильно настроенный файл даст возможность избежать появления подобных непонятных символов на сайте.
Для чего необходима кодировка
Для сайта существует основная кодировка, которую называют Default Charset. Включена она в специальный файл .htaccess. Кодировка необходима для того, чтобы верно определить правило, согласно которому символы будут преобразовываться в кодовые значения.
Пару десятков лет назад кодировки были совсем маленькими. Они включали в себя не более семи бит информации. Примером может быть кодировка ASCII. Теперь их появилось очень большое количество. Среди них - и самые популярные UTF-8, Windows-1251.
Суть заключается в том, что документы, имеющие разные кодировки, будут выглядеть по-разному. Именно по этой причине на страницах сайта появляются ошибки. Браузер пользователя может быть настроен на один тип кодировки, а файл .htaccess на сервере содержит в себе другую. В результате весь текст на страницах превращается в набор непонятных символов.
Основные кодировки
В .htaccess можно указать параметр, при помощи которого будет определяться главная кодировка для всего веб-портала. Кроме этого можно прописать и другие кодировки, что позволит им корректно отображаться на всех страницах сайта. Веб-разработчиками в .htaccess кодировка обычно указывается двух видов - UTF-8 и Windows-1251. Именно они по умолчанию используются большим числом браузеров и текстовых редакторов.
Во избежание образования закорючек, которые невозможно разобрать, необходимо либо настроить главную кодировку всего сайта при помощи параметра Default Charset, а также в .htaccess запретить перекодировку файлов либо прописать все необходимые кодировки. Ведь главной проблемой является то, что, например, пользователь может отправить какие-то данные в совершенной другой кодировке, которую сервер прочитать не сможет. Такие действия нужно заранее предупредить.
Как настроить кодировку сайта в файле .htaccess
Кодировка Default Charset, являющаяся ключевой, обрабатываемая сервером по умолчанию и отправляемая браузеру, указывается при помощи опции AddDefaultCharset. Необходима она для того, чтобы добавлять настройку кодировки по умолчанию. При отправке заголовков HTTP в них прописывается правило, которое сообщает браузеру, в какой кодировке следует рассматривать все символы на сайте. Именно поэтому в разделе Content-Type нужно указывать верную кодировку. Это и есть настройка .htaccess.
Вышеуказанная опция является основной необходимой директивой для того, чтобы настраивать кодировку сайта в файле. Эта команда способна окончательно решить проблему, связанную со скриптами, по умолчанию использующими неизвестные для русскоязычных браузеров кодировки, а не те, которые нужны. Если не прописать параметр, браузер бы выдал ошибку. В противном случае автоматически все документы перекодируются. Нужно учесть, что не все браузеры видят кодировки одинаково. По этой причине лучше использовать самые известные – UTF-8 и Windows-1251. Они известны всем браузерам.
От проблем с кодировкой можно избавиться при помощи активации автоматической перекодировки документов. Для этого в файл .htaccess включается специальная опция CharsetSourceEnc. После нее необходимо прописать основную кодировку. Все остальные будут перекодироваться в нее. Если по той или иной причине перекодировку нужно будет убрать, то следует написать в файле команду CharserDisable On.
Задание еще одной кодировки для отдельных разделов сайта
Такое не случается часто, но иногда возникает необходимость, чтобы одна страница либо целая часть раздела отображалась на другом языке. Соответственно, нужна и другая кодировка. В случае нахождения в корневой директории файла .htaccess с прописанной кодировкой, все страницы сайта будут отображаться именно в ней. Результатом может быть то, что человек зайдет в иностранный раздел веб-сайта, а там вместо текста на нужном ему языке будет отображаться группа непонятных символов и букв.
Для того чтобы с этой проблемой разобраться, нужна дополнительная настройка .htaccess. Необходимо создать еще один такой же файл и в нем прописать команду AddType, в которой указывается дополнительная кодировка. Этот файл может действовать как на весь веб-сайт, так и на отдельные страницы. Это зависит от того, где будет расположен файл .htaccess. Если разместить его внутри папки с определенным языком сайта, его конфигурации будут работать лишь на данную часть. Остальные же будут функционировать по правилам первого .htaccess, который находится в корневой директории сайта.
Редирект при помощи .htaccess
Многие разработчики сайтов сталкиваются с такой ситуацией, когда при изменении действующего проекта нужно сохранить старые адреса некоторых страниц. Особенно часто такое случается, когда меняется система управления контентом, на которой сайт работает. Бывает, что изначально сайт являлся статическим и о логичности адресов никто не заботился. Необходима переадресация (.htaccess требует внесения изменений).
Переадресация также нужна, если администратор хочет сохранить позиции страниц сайта в выдаче поисковых систем. Ведь повышать рейтинг с нуля – это трудная задача.
Что нужно для того, чтобы была организована такая переадресация? .htaccess должен использоваться на хостинге. Редирект в нем осуществляется при помощи опции Redirect 301, после которой указывается адрес новой страницы.
Ограничение доступа
Для того чтобы ограничить доступ ко всему сайту, его разделам или определенным файлам, которые находятся на сервере, также используется .htaccess. Доступ запрещается для того, чтобы к файлам не обращались те пользователи, которые могут что-то испортить.
Используются следующие команды:
- Для запрета доступа ко всему сайту в файле прописывается команда deny from all.
- Для запрета доступа с определенного ip-адреса используется команда deny from ip_адрес_пользователя.
Защита файлов
Скорее всего, каждый пользователь встречал абсолютно идентичные статьи на разных веб-сайтах. Чаще всего бывает так, что их попросту воруют с других ресурсов. Конечно, поисковики борются с таким явлением, как дублирование страниц, но очень часто они не совсем правильно выбирают первоисточник. Для копирайтеров и программистов это является очень серьезной проблемой. Ведь для того, чтобы написать качественный контент, уходит много времени и сил. А потом поисковая система накладывает санкции за скопированный материал. Это неприятно. Часто с текстом также воруют и изображения. При этом большое число таких воров даже не загружают изображения с чужих ресурсов. Чтобы не перегружать свои серверы, они просто указывают ссылки на картинки с первоисточника. Такая вставка ссылки именуется хотлинком. Кроме ссылок на картинки их можно вставлять, указывая на файлы, которые доступны для загрузки. Для автора контента такое явление крайне неприятно. Сервер первоисточника из-за них также перегружается.
В файле .htaccess можно указать файлы, которые будут защищены от хотлинка. В нем прописываются расширения, к которым будет запрещен доступ. Также для отельных файлов или целых групп можно установить пароль. Затем файл .htaccess помещается в директорию, доступ к которой нужно закрыть.
Диагностика ошибок
Бывает так, что возникает ошибка с кодом «500» после редактирования либо размещения файла .htaccess. Ошибка такая появляется из-за недочетов в самом файле. Можно узнать причины в файле, который находится в директории домена, в папке с отчетами.
Также, если не выполняется то, что указано в .htaccess, нужно удостовериться в том, что обработка данного файла включена в настройках сайта.
Как видите, файл .htaccess необходим как для настройки кодировки веб-сайтов, так и для других полезных операций, позволяющих грамотно управлять разработкой и поддержкой различных проектов.