Если файл robots.txt дает указания роботам поисковых систем, то с помощью файла htaccess можно управлять работой своего вебсервера, именно о работе этого файла и пойдет речь в этой статье.
Многие начинающие вебмастера не имеют достаточных знаний о том, зачем нужен файл htaccess и как он работает. На просторах интернета можно встретить огромное число мануалов, которые отвечают на этот вопрос слишком подробно и даже описывают готовые конфигурации htaccess, но основная проблема так и остается неразрешенной.
Так, на форумах можно встретить множество вопросов, которые указывают на то, что для большинства новичков непонятны основные принципы работы htaccess и его функции. Из-за этого непонимания и встречается одна и та же ошибка: можно скопировать готовую конфигурацию htaccess, которая будет неправильно работать для вашего сайта. Поэтому давайте раз и навсегда разберемся с этими техническими вопросами на простом языке.
Для того чтобы работал ваш сайт, ему нужен вебсервер, к которому вы получаете доступ, арендуя хостинг. А чтобы сервер, находящийся в датацентре, стал выполнять функции вебсервера, на него нужно установить соответствующий софт. Наибольшее распространение получила связка ПО LAMP (Linux + Apache + MySQL + PHP), скорее всего именно такой набор программного обеспечения предоставляет вам хостинговая компания.
Apache – это основа вебсервера, точнее это HTTP-сервер, именно он и отвечает за отображение страниц вашего сайта. Как у всякого настоящего вебсервера, у него есть файл конфигурации настроек httpd.conf, однако и для каждой директории на сайте можно задать свои настройки работы Apache с помощью файла-конфигуратора .htaccess. Точка обязательна, так как это системный файл, а системные файлы в Linux начинаются с точки. Такими файлами конфигураций (а их может быть несколько в разных папках) можно управлять работой Mod_rewrite (модуль, используемый Apache для преобразования URL из одного вида в другой).
Мы не будем рассматривать модули Apache – это вы можете узнать у своего хостера на его сайте или связавшись с технической поддержкой.
Теперь перейдем к практическим шагам, от которых будет больше пользы, чем от теории: если у вас есть доступ к ftp серверу, то вы можете зайти в директорию вашего сайта и открыть текстовый файл .htaccess любым текстовым редактором.
Пример файла htaccess для WordPress может быть таким:
# BEGIN WordPress <IfModule mod_rewrite.c> RewriteEngine On RewriteBase / RewriteRule ^index\.php$ - [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index.php [L] </IfModule> # ENDWordPress
Если в этом файле вам ничего не понятно – не спешите его закрывать, а продолжайте читать эту статью. Мы еще разберемся, что и как здесь работает.
Простейший пример редиректа выглядит так
redirect 301 /old-page.php http://www.new-site.ru/new-page.php
То есть задано постоянное (301) перенаправление пользователя страницы old-page.html на новую страницу new-page.php сайта. Если нужно задать временное перенаправление на специальную страницу, то используйте редирект 302.
Допустим, есть у нас сайт, на котором все отлично работает и только на стадии анализа оказывается, что его главная страница доступна по целым четырем адресам.
Это очень плохо, потому что вес главной страницы может быть уменьшен в 4 раза.
Чтобы эту проблему решить, нужно прописать такие настройки:
Options +FollowSymLinks RewriteEngine on RewriteCond %{HTTP_HOST} ^www.apanshin.ru RewriteRule (.*) https://apanshin.ru/$1 [R=301,L] RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.html\ HTTP/ RewriteRule ^index\.html$ https://apanshin.ru/ [R=301,L]
Теперь все четыре адреса перенаправляются на https://apanshin.ru/.
RewriteCond – это условие для переписывания поступающей ссылки, а RewriteRule – правило рерайтинга, которое передает Mod_Rewrite. В синтаксисе файла используются регулярные выражения, о которых вам расскажет любой программист.
ЧПУ – это человеку понятные урлы, которые не только легко читаются посетителями сайта, но и дают плюс в поисковом продвижении страницы, так как могут содержать в себе ключевые слова, узнаваемые поисковыми ботами.
Рассмотрим, пару примеров, как можно настроить ЧПУ на сайте с помощью правил htaccess: преобразуем адрес вида apanshin.ru/product.php?id=123 в apanshin.ru/product/123
RewriteEngine on RewriteRule ^product/([^/\.]+)/?$ product.php?id=$1 [L]
Или еще один вариант преобразования адреса страницы apanshin.ru/script.php?product=123 в ЧПУ apanshin.ru/cat/product/123/:
RewriteRule cat/(.*)/(.*)/$ /script.php?$1=$2
Нужно заметить, что в последнее время свои позиции все больше и больше завоевывают сервера на базе Nginx без Apache. Разумеется, что в этом случае файлы .htaccess не сработают – их настройки нужно перенести в соответствующие конфигурационные файлы, управляющие работой Nginx. В таком случае будут полезны сервисы преобразования правил htaccess в конфигурацию для nginx http://winginx.com/ru/htaccess.
Как вы могли заметить, работу некоторых функций файла htaccess мы так и не рассмотрели, однако исчерпывающую информацию о работе htaccess можно узнать по адресу: http://www.htaccess.net.ru/.