Настройка редиректов в .htaccess

Настройка редиректов в .htaccess

В данной заметке-памятке рассматриваются приемы установки редиректов в файле .htaccess на все случаи жизни: С www на без www, с http на https, с поддомена на домен. Цель написания данной заметки — сохранить эти приемы в одном месте, а не снова бегать по интернету в поисках решения, когда возникнет такая потребность.

Файл .htaccess, как правило, лежит в корневой папке сайта. В нем и происходит вся работа, описанная ниже. Редиректы даются «как есть», без обширных пояснений. Теоретическая основа для файла .htaccess — это, в самом деле, тема отдельной статьи.

Какие бывают редиректы?

Чаще всего говорится от 301-редиректе. Из этого утверждения можно сделать вывод, что существуют еще какие-то редиректы. Они бывают следующих видов:

301-й редирект — постоянная переадресация. Действительно, он используется чаще остальных.

302, 303 и 307 — обозначают временную переадресацию. При таком редиректе предполагается, что страница, с которой идет редирект, перенесена временно и в будущем будет доступна по старому адресу.

Варианты настройки редиректа с www на без www в .htaccess

В этом разделе приведены самые простые варианты, расширенный вариант будет ниже (в разделе «редирект с http://www… на https://…«). К слову, с «поддомена»

  1. Первый вариант (Имейте ввиду, что «вашсайт» нужно заменить на реальный адрес сайта):
  2. Второй вариант:
  3. Третий вариант:

     

Редирект с поддомена на домен:

Варианты настройки редиректа с http на https в .htaccess

  1. Первый вариант:
  2. Второй вариант:
  3. Третий вариант:
  4. Четвертый вариант

     

Редирект с http://www… на https://…

Расширенный вариант, который автор данной заметки обнаружил «на просторах», когда столкнулся с проблемой, при которой не работали перечисленные выше способы. Правда, как оказалось потом, проблема была не в редиректах, а в сервере.

Естественно, что этот код также должен вставляться после RewriteEngine On.

Почему может не работать какой-либо из способов?

  1. [Наиболее распространенная] Ошибка в синтаксисе директив
  2. Ограничения CMS для файла .htaccess (по крайней мере, reg.ru пишет об этом в своей справке)
  3. Какие-либо проблемы с хостингом. Маловероятно, но решается через техподдержку, как правило.

Редирект средствами php 

Редирект через php больше подходит для отдельных страниц. В частности, автор использовал его для редиректа с /personal/cart/ на /cart/. Возможно 2 варианта записи редиректа на php:

  1. Первый:
  2. Второй:

Обратите внимание, что функция редиректа всегда должна стоять в начале php-файла. В противном случае вы не получите ничего, кроме ошибки. Например, если это комбинированная страница с html, то функция редиректа должна вызываться на первой строке (Даже раньше тега <html>, если он есть в данном файле.).

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