4 основные команды файла .htaccess, которые должен знать каждый

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

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

Основные команды .htaccess

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

Для того чтобы работал ваш сайт, ему нужен вебсервер, к которому вы получаете доступ, арендуя хостинг.  А чтобы сервер, находящийся в датацентре, стал выполнять функции вебсервера, на него нужно установить соответствующий софт. Наибольшее распространение получила связка ПО LAMP (Linux + Apache + MySQL + PHP), скорее всего именно такой набор программного обеспечения предоставляет вам хостинговая компания.

 .htaccess управляет работой Apache

Apache – это основа вебсервера, точнее это HTTP-сервер, именно он и отвечает за отображение страниц вашего сайта.  Как у всякого настоящего вебсервера, у него есть файл конфигурации настроек httpd.conf, однако и для каждой директории на сайте можно задать свои настройки работы Apache с помощью файла-конфигуратора .htaccess. Точка обязательна, так как это системный файл, а системные файлы в Linux начинаются с точки. Такими файлами конфигураций (а их может быть несколько в разных папках) можно управлять работой Mod_rewrite (модуль, используемый Apache для преобразования URL из одного вида в другой).

Мы не будем рассматривать модули Apache – это вы можете узнать у своего хостера на его сайте или связавшись с технической поддержкой.

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

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

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

Какие функции выполняет файл htaccess ?

  • Установка редиректов (перенаправлений) на уровне вебсервера
  • 301 – постоянный, если сайт сменил адрес или структуру
  • 302 – временный, если на сервере ведутся работы и все возобновится
  • Склеивание адресов
  • Домен с www и без www
  • Склеивание дублирующихся url
  • Настройка ЧПУ (человеку понятный url)
  • Блокировка IP
  • Защита изображений сайта от хотлинкинга
  • Кеширование файлов и т.д.

Редиректы (перенаправления)

Простейший пример редиректа выглядит так

 

redirect 301 /old-page.php http://www.new-site.ru/new-page.php


То есть задано постоянное (301) перенаправление пользователя страницы old-page.html на новую страницу new-page.php сайта. Если нужно задать временное перенаправление на специальную страницу, то используйте редирект 302.

Склеивание адресов

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

  • http://apanshin.ru/
  • http://www.apanshin.ru
  • http://apanshin.ru/index.php
  • http://www.apanshin.ru/index.php

Это очень плохо, потому что вес главной страницы может быть уменьшен в 4 раза.

Чтобы эту проблему решить, нужно прописать такие настройки:

Options +FollowSymLinks
RewriteEngine on
RewriteCond %{HTTP_HOST} ^www.apanshin.ru
RewriteRule (.*) http://apanshin.ru/$1 [R=301,L]
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.html\ HTTP/
RewriteRule ^index\.html$ http://apanshin.ru/ [R=301,L]

Теперь все четыре адреса перенаправляются на http://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

Как преобразовать правила .htaccess в Nginx

Нужно заметить, что в последнее время свои позиции все больше и больше завоевывают сервера на базе Nginx без Apache. Разумеется, что в этом случае файлы .htaccess не сработают – их настройки нужно перенести в соответствующие конфигурационные файлы, управляющие работой Nginx. В таком случае будут полезны сервисы преобразования правил htaccess в конфигурацию для nginx http://winginx.com/ru/htaccess.

Как вы могли заметить, работу некоторых функций файла htaccess мы так и не рассмотрели, однако исчерпывающую информацию о работе htaccess можно узнать по адресу: http://www.htaccess.net.ru/.

Оцените статью: 1 балл2 балла3 балла4 балла5 баллов
(Нет оценок)
Loading...Loading...

Оставьте свой комментарий к статье: 4 основные команды файла .htaccess, которые должен знать каждый

  1. Михаил Чугунов пишет:

    Спасибо, дико крутая статья! Сделал склейку www, поставил редиректы на index.php — кул!

    • Алексей Паньшин пишет:

      Лучше клеить на «/».

Оставьте свой комментарий к статье