---
title: "Настройка перенаправлений для веб-сервера Apache"
description: "Настройка перенаправлений для веб-сервера Apache. Документация и инструкции по использованию и настройке облачных серверов Timeweb Cloud."
---

> Полный индекс документации для ИИ-агентов: [llms.txt](https://timeweb.cloud/llms.txt).

В статье приведены примеры стандартных перенаправлений, которые могут быть настроены с помощью файла `.htaccess` вашего сайта.

Указанные перенаправления будут работать:

-   для большинства конфигураций VDS, где используется веб-сервер **Apache** (необходимо, чтобы был [включен модуль mod\_rewrite](https://timeweb.cloud/docs/unix-guides/setting-up-redirects#kak-proverit-chto-mod-rewrite-vkluchen));
-   для серверов с VestaCP или ispmanager, установленными через панель управления аккаунтом. В ispmanager простые перенаправления могут также быть настроены [средствами панели](https://timeweb.cloud/docs/control-panels/ispmanager/setting-up-redirects).

Обратите внимание, что данные редиректы **не подойдут** для OS Bitrix7.

## Что такое .htaccess?

Файл `.htaccess` позволяет вам настраивать конфигурацию веб-сервера Apache для конкретного сайта, не затрагивая настройки основных конфигурационных файлов Apache (`httpd.conf` в CentOS и `apache2.conf` в Ubuntu/Debian) и не рискуя что-то необратимо сломать на сервере. Директивы, указанные в `.htaccess` будут действовать только для каталога, в котором размещается этот файл, и его подкаталогов. 

Для подкаталогов также можно создавать дополнительные `.htaccess`\-файлы; при этом они переопределят настройки, назначенные в `.htaccess` на уровне выше.

В `.htaccess` можно:

-   Настраивать перенаправления с одного адреса на другой;
-   Управлять настройками PHP;
-   Задавать собственные страницы ошибок;
-   Устанавливать права доступа к файлам;
-   — и многое другое.

## Как создать .htaccess?

Файл необходимо создать в каталоге сайта (обычно это `/var/www/html`, но у вас путь может отличаться — в этом случае замените его в командах) с помощью подключения по SSH или FTP. 

При подключении по SSH это можно сделать так:

```shell
touch /var/www/html/.htaccess
```

## Как «включить» .htaccess?

Чтобы веб-сервер Apache читал и применял настройки из файла `.htaccess`, в главном конфигурационном сайте Apache — `httpd.conf` или `apache2.conf` — должна быть прописана директива `Allow Override All` для нужной нам директории. 

Рассмотрим на примере сервера с LAMP с системой Ubuntu 20.04.

Откроем файл конфигурации `apache2.conf`:

```shell
nano /etc/apache2/apache2.conf
```

Стандартно сайт размещается в директории `/var/www/html/`. Видим, что `Allow Override` для нее имеет значение `None` — значит, `.htaccess` не будет работать.

![5cf7458e 8ad6 47e4 9236 B4792686e8f0](https://content.timeweb.com/assets/1a58399c-76ca-4c6c-9917-a7f607a0a237?width=1100&height=745)

Если ваш сайт размещен по другому пути (не `/var/www/.../`), исправьте путь на верный или добавьте еще один блок `<Directory>` с нужным путем.

Меняем значение на `Allow Override All`:

![A7f3c1e5 394e 42e7 Aafc E8df8cd7a6a3](https://content.timeweb.com/assets/63e7ec92-b72a-4662-9e93-280d03d584a2?width=1102&height=745)

Сохраняем изменения (Ctrl + X, затем Y, затем Enter).

И перезагружаем веб-сервер:

```shell
systemctl restart apache2
```

Теперь мы можем прописывать директивы для сайта в файле `.htaccess`.

## Как проверить, что mod\_rewrite включен?

Во-первых, убедитесь, что у вас включен модуль `mod_rewrite`. Для этого выполните команду:

```shell
apache2ctl -M | grep rewrite
```

В выводе должно быть `rewrite_module (shared)`:

![Powershell Gt D Ja T Xgn B](https://content.timeweb.com/assets/c5eff03c-8a8a-4af1-8eb8-5de48d22b15d?width=522&height=69)

Если вывод отличается — включите mod\_rewrite командой:

```shell
sudo a2enmod rewrite
```

## Как прописывать редиректы?

Директивы перенаправлений необходимо указывать в блоке `<IfModule mod_rewrite.c>` со следующим содержимым:

```shell
<IfModule mod_rewrite.c>
Options +FollowSymLinks 
RewriteEngine on 
#Ваши правила 
</IfModule>
```

В качестве правил указываются директивы `RewriteCond` и `RewriteRule` с необходимыми значениями — `RewriteCond` задает условие, при котором происходит выполнение правила, указанного в `RewriteRule`.

Например, так мы настроим перенаправление с HTTP на HTTPS для сайта mydomain.com:

```shell
<IfModule mod_rewrite.c>
Options +FollowSymLinks 
RewriteEngine on 
RewriteBase / 
RewriteCond %{HTTPS} !on 
RewriteCond %{HTTP_HOST} ^mydomain.com$ 
RewriteRule ^(.*)$ https://mydomain.com/$1 [R=301,L]
</IfModule>
```

![Powershell J5 Vf Uji Bjw](https://content.timeweb.com/assets/29d68a8e-11aa-4368-9ad1-242aad520f56?width=1086&height=748)

## Настройка перенаправлений

### Перенаправление на другой домен

В примере ниже выполняется редирект с www.old-domain.ru на www.new-domain.ru:

```shell
RewriteEngine on 
RewriteCond %{HTTP_HOST} ^(www\.)?old-domain\.ru$ 
RewriteRule ^(.*)$ http://www.new-domain.ru/$1 [R=301,L]
```

### Перенаправление c http на https

1\. Перенаправление с **http**://example.ru на **https**://example.ru.

```shell
RewriteBase / 
RewriteCond %{HTTPS} !on 
RewriteCond %{HTTP_HOST} ^example.ru$ 
RewriteRule ^(.*)$ https://example.ru/$1 [R=301,L]
```

1a. Для серверов **с панелью VestaCP**:

```shell
RewriteCond %{SERVER_PORT} !^443$ 
RewriteRule .* https://%{SERVER_NAME}%{REQUEST_URI} [R=301,L]
```

1b. Для серверов **с панелью ispmanager** при использовании Nginx:

```shell
RewriteBase / 
RewriteCond %{HTTPS} off 
RewriteCond %{HTTP:X-Forwarded-Proto} !https 
RewriteRule .* https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
```

2\. Перенаправление с **http**://example.ru на **https**://**www**.example.ru.

```shell
RewriteBase / 
RewriteCond %{HTTPS} !on 
RewriteCond %{HTTP_HOST} ^example.ru$ 
RewriteRule ^(.*)$ https://www.example.ru/$1 [R=301,L]
```

3\. Перенаправление с **http**://**www**.forum.example.ru на **https**://forum.example.ru.

```shell
RewriteCond %{HTTP_HOST} ^www\.forum\.example\.ru$ [NC] 
RewriteRule ^(.*)$ https://forum.example.ru/$1 [R=301,L] 
RewriteBase / 
RewriteCond %{HTTPS} !on 
RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=301,L]
```

4\. Перенаправление с **http**://forum.example.ru на **https**://**www**.forum.example.ru.

```shell
RewriteCond %{HTTP_HOST} ^forum\.example\.ru$ [NC] 
RewriteRule ^(.*)$ https://www.forum.example.ru/$1 [R=301,L] 
RewriteBase / 
RewriteCond %{HTTPS} !on 
RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=301,L]
```

### Перенаправление с https на http

```shell
RewriteBase / 
RewriteCond %{HTTPS} on [NC] 
RewriteRule ^(.*)$ http://%{HTTP_HOST}/$1 [R=301,L]
```

### Перенаправление на http для одной страницы

Вариант 1:

```shell
RewriteBase / 
RewriteCond %{HTTPS} on [NC] 
RewriteCond %{REQUEST_URI} ^/Необходимая директория_страница$ 
RewriteRule ^(.*)$ http://%{HTTP_HOST}/$1 [R=301,L]
```

Вариант 2:

```shell
RewriteBase / 
RewriteCond %{HTTPS} !on 
RewriteCond %{REQUEST_URI} !^/Необходимая директория_страница$ 
RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=301,L] 
RewriteCond %{HTTPS} on [NC] 
RewriteCond %{REQUEST_URI} ^/Необходимая директория_страница$ 
RewriteRule ^(.*)$ http://%{HTTP_HOST}/$1 [R=301,L]
```

**Пример**: отключение перенаправления на https для страницы `bitrix/admin/1c_exchange.php` для корректной работы обмена данных с 1C:

```shell
RewriteBase / 
RewriteCond %{HTTPS} !on 
RewriteCond %{REQUEST_URI} !^/bitrix/admin/1c_exchange\.php$ 
RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=301,L] 
RewriteCond %{HTTPS} on [NC] 
RewriteCond %{REQUEST_URI} ^/bitrix/admin/1c_exchange\.php$ 
RewriteRule ^(.*)$ http://%{HTTP_HOST}/$1 [R=301,L]
```

Оно же **для панели VestaCP**:

```shell
RewriteCond %{SERVER_PORT} !^443$ 
RewriteCond %{REQUEST_URI} !^/bitrix/admin/1c_exchange\.php$ 
RewriteRule .* https://%{SERVER_NAME}%{REQUEST_URI} [R=301,L] 
RewriteCond %{SERVER_PORT} ^443$ 
RewriteCond %{REQUEST_URI} ^/bitrix/admin/1c_exchange\.php$ 
RewriteRule .* http://%{SERVER_NAME}%{REQUEST_URI} [R=301,L]
```

### Перенаправление на https для одной страницы

```shell
RewriteBase / 
RewriteCond %{HTTPS} !on 
RewriteCond %{REQUEST_URI} ^/Необходимая директория_страница$ 
RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=301,L]
```

### Перенаправление домена без www на домен с www

В примерах осуществляется редирект с forum.example.ru на www.forum.example.ru.

Способ 1:

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

Способ 2, без указания домена:

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

### Перенаправление домена с www на домен без www

В примерах осуществляется перенаправление с www.forum.example.ru на forum.example.ru.

Способ 1:

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

Способ 2.

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

### Перенаправление в подкаталог

Перенаправление поддомена forum.example.ru в подкаталог forum: 

```shell
RewriteBase / 
RewriteCond %{HTTP_HOST} ^forum\.example\.ru$ 
RewriteCond %{REQUEST_URI} !/forum/ RewriteRule ^(.*)$ /forum/$1 [L]
```
