Что такое htaccess, и для чего он нужен

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

Вот так же и .htaccess — зашел в нужную папку сайта, и тут же сервер понимает: «Ага, здесь у нас особые правила».

Этот маленький файл прячется обычно в корневой папке сайта, словно секретный агент с кодовым именем «точечные настройки». И самое приятное — чтобы внести изменения, не нужно устраивать перезапуск сервера или устраивать церемонию с жертвоприношениями (хотя иногда кажется, что без последнего никак). Просто открываешь его в любом текстовом редакторе — даже блокноте!

— и вписываешь свои магические команды. Они вступают в силу мгновенно, как только их сохранил. Вспоминается анекдот про программиста: «Почему программисты любят кофе?

Потому что после него все баги исправляются сами». С .htaccess примерно так же — внес изменения и сразу видишь результат.

Знаете, почему этот файл такой универсальный? Потому что он умеет всё! Хотите перенаправить пользователей с www на сайт без www?

Легко! Хотите заставить сайт работать только через HTTPS? Пожалуйста!

Хотите запретить доступ к определённым страницам? Запросто! Как говорил один мудрый админ: «Настроить .htaccess – это как поставить дорожные знаки на интернет-автостраде.

Без них водители будут ездить куда попало». И правда, без него сайт может выглядеть как город без светофоров – хаос и аварии.

Давайте представим ситуацию: вы заходите на сайт www.mitup.ru, а вас перенаправляют на mitup.ru без лишних www. Это похоже на то, как если бы вам на входе сказали: «Добро пожаловать! Но шляпу снимите!» А сам процесс перенаправления происходит благодаря вот таким строкам в .htaccess:

RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
RewriteRule ^(.*)$ http://%1/$1 [R=301,L]

Поясню для тех, кто не дружит с регулярками: первая строка проверяет адрес – есть ли там надоедливое www.

Вторая – говорит серверу: «Если да, то отправь пользователя на адрес без www». Всё просто и элегантно. Как говорил мой знакомый программист: «Регулярки – это как волшебная палочка Гарри Поттера… только если ты знаешь заклинание».

А теперь представьте другой случай – хотите заставить всех использовать HTTPS вместо HTTP. Это как убедить гостей снять уличные ботинки перед входом домой – чтобы было чисто и безопасно.

Для этого тоже есть хитрые конструкции:

RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

Вот тут сервер проверяет переменную %{HTTPS}. Если она равна off (то есть соединение незащищённое), то пользователя автоматически переводят на защищённый протокол https://… Это примерно как если бы охранник на входе сказал: «Без маски не пускаем!» Только здесь маска — это сертификат безопасности.

Вспоминается один забавный случай из жизни веб-мастера: решил он настроить редирект с http на https через .htaccess и забыл поставить флаг [L] (last). В итоге получилась бесконечная петля редиректов — браузер начал ругаться так громко, что соседи подумали о пожаре.

С тех пор у каждого правила стоит знак стопа — иначе будет весело!