Главная » 2015 » Декабрь » 20 » настройка htaccess вкратце
10:56 AM
настройка htaccess вкратце

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

Не важно какой у вашего хостера сервер Апач, nginx или какой ещё, все они отдают данные пользователю. Так вот, как они отдадут данные и решает этот файл. Что можно сделать этим файлом?

  • Запаролить какую-то часть сайта
  • Отдавать пользователю архивы вместо больших картинок
  • Отдавать пользователю архивы и документы в формате как нам надо
  • Настроить адреса страниц, вплоть до страниц ошибок 301 страниц 404 и даже название вашего домена сайта

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

Включаем кэширование

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

Осуществляется оно с помощью команды ExpiresDefault и ExpiresByType.

Это наши шаблоны:

ExpiresDefault - кеширование по какому-то принципу
ExpiresByType - кеширование по типу данных
ExpiresDefault "<base> [plus] {<num> <type>}*"
ExpiresByType type/encoding "<base> [plus] {<num> <type>}*" 
<base> - основа. Показывает тип проверки кэширования. Бывает строго два типа. 1. access - если объект до этого не кешировался. 2. modification - проверяет изменялся ли объект. Это для любителей делать праздничные шапки и фоны. [plus] - это просто слово plus буквами так написано. После него пишется дата {<num> <type>}* . (обычно используются только months weeks и days) Если вы полезете в интернет, то увидите что овер 95% сайтов по этой теме будут рекомендовать вот такую вот строку: ExpiresByType image/jpeg "access plus 6 month". И это хороший вариант... для сайта-визитки.. А если у вас не визитка, а новостной портал или ещё что? Вы картинки каждый день публикуете и люди их скачивают на пол года? Это не логично. Так что чем быстрее изменяется сайт тем меньше у него должно быть время кеширования. Ну и type/encoding это тип данных. Это я просто приведу списком.

 

В итоге получается что-то такое:

    ExpiresActive On
    ExpiresDefault "access plus 2 month"
    ExpiresByType js/javascript "access plus 6 months"
    ExpiresByType text/css "access plus 2 month"
    ExpiresByType image/png "access plus 2 month"
    ExpiresByType image/jpeg "access plus 2 month"

Работа со ссылками

Ну где это может применяться? Если нам нужно назначить страницу 404 или прописать редирект с домена без www. А ещё так можно прятать GET запросы. Крайне удобная штука. Начинаем от простого к сложному.

Определяем индексный файл. Это файл с которого стартует наш сайт

DirectoryIndex index.php

Сразу пропишем и нашу страничку 404 когда пользователь попал абы-куда. Ну то есть страница не существует. На это у меня будет 404.html . Таким же макаром выправляются и другие ошибки типа 500  401 и блабла. Я считаю страницы 404 вполне достаточно.

ErrorDocument 404 /404.html

Ну а дальше начинается основная магия. Делается она с помощью RewriteRule. Если сказать простым языком это правило по которому изменяется ваша ссылка. Вообще применений довольно много, но я рассмотрю основные. Сразу скажу что правила составляются на основе работы регулярных выражения языка Perl. Если вы не понимаете регулярные выражения, то лучше сразу скачайте готовый пример какой-то или попросите чтобы кто-то сделал всё за вас. Правила составления регулярных выражений на Perl я описывать тут не буду. Гуглите. И без того статья получилась не маленькая.

Структура RewriteRule очень простая по сути:

RewriteRule правило_по_которому_ищем на_что_заменяем

Для начала то что вам понимать не надо. Это универсальное решение и придумано оно очень давно. Все ссылки без www становятся с WWW. Это просто мастхэв на любом сайте. Конечно басни нам травят про то что это значения не имеет, да в примерах яндекса уже давно все без WWW. Да мне побоку а у меня будет С.

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

Принцип работы RewriteRule такой. Составляется правило по которому ищется ссылка. Если ваша ссылка соответствует правилу по которому вы ищите, вы можете преобразовать её в удобный для вас вид. При этом все буквы из ссылки, которые вам нужны, вы можете сохранить в переменные, которые обозначаете $1, $2 .. $100 и т.д. Понятное дело что у вас их будет не более трёх, ато и одна. В общем, глаза боятся, а руки делают. Берём сразу пример и на его основе делаем правило.

У меня есть ссылка форума типа:
http://www.somesite.su/?inc=forum&forum=4&topic=11
Составляю для неё правило:
RewriteRule %{HTTP_HOST}/\?inc=forum.*topic=$1 %{HTTP_HOST}/forum/topic$1
В итоге у меня получается:
http://www.somesite.su/forum/topic11

Понятное дело команды выполняются по порядку. Поэтому прописывайте RewriteRule в порядке как бы вы преобразовывали. Обычно нет особого смысла гемороиться и прописывать часть пути. Поэтому его можно указать сразу перед списком правил с помощью RewriteCond.

По аналогии с примером выше сразу пишу. Выбираю адрес сайт. Он у меня и так и так всегда будет одинаковый. А после пишу правила

RewriteCond %{HTTP_HOST}/
RewriteRule \?inc=forum.*topic=$1 %{HTTP_HOST}/forum/topic$1
RewriteRule \?inc=$1.* %{HTTP_HOST}/$1.html

Надеюсь всё понятно.

На закуску пару слов про сжатие в gzip

Сейчас пошла мода сжимать сайты. Типа отдаётся быстрее и блабла. Оно-то да, но далекооо не всегда это имеет смысл. Опять же таки блоги неблоги, картинка фона всё. Чтобы не гемороиться я искренне рекомендую искать в интернете готовые варианты скриптов, которые подойдут именно для вас.

Я разобрал далеко не всё применение. Не затронул тему работы со скачкой/закачкой, не затронул тему с каталогами по паролям, не затронул про ридиректы при плохой индексации. В общем, обсуждать тут есть чего. Но вот эти основы основ - обязательны. А остальное уже постольку поскольку. Итог статьи я вкладываю в пример в файлы. Посмотрите его. Там есть как подключать эти команды все это я тоже не расписывал. Если что-то непонятно или не пашет - пишите в комменты.

p.s. Вот тут вот ещё не мало шаблончиков

Просмотров: 696 | Добавил: 9dem | Рейтинг: 0.0/0
Всего комментариев: 0
avatar