Найти тему
WebDev

Cайт на под-домене без создания отдельного аккаунта

Как создать отдельный сайт для тестирования в каталоге основного сайта с помощью .htaccess и закрыть доступ к нему паролем.

Примерное содержимое файла .htaccess
Примерное содержимое файла .htaccess

Иногда нужно показать незавершенный сайт заказчику или обсудить отдельные детали верстки и т.п. Нужно быстро и желательно без расходов разместить тестируемый сайт в сети.

Опишу один из самых простых способов размещения тестового сайта на сервере.

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

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

Для начала создадим под-домен на вашем домене типа test.domain.ru и сделаем его алиасом (alias) к вашему основному сайту с помощью панели управления хостингом. Если у вас уже есть домен для тестового сайта, можете его сделать алиасом и все последующие действия выполнять с ним.

Дальше создадим каталог в корне сайта, например, test.

В корень сайта размещаем файл .htaccess

Добавляем строчки

RewriteCond %{HTTP_HOST} ^test\.domain.ru$ [NC]
RewriteCond %{REQUEST_URI} !test/public/
RewriteRule ^(.*)$ test/public/$1

Теперь адреса на под-домене будут перенаправляться в ваш каталог test, корневой каталог public. Для того, чтобы задать корневой каталог, разместите в корне уже вашего тестового сайта (test) .htaccess следующего содержания

RewriteEngine on
RewriteCond %{REQUEST_URI} ^(.*)
RewriteRule !^public public%{REQUEST_URI} [L]

Каталог public может иметь другое имя (www, httpdocs, docs ...), тогда просто поменяйте соответствующие значения.

Так как сайт тестовый, мы бы не хотели, чтобы посторонние раньше времени видели его содержимое. Поэтому установим пароль на каталог сайта.

Для начала создадим файл паролей. Удобнее все с помощью ssh-клиента. 

htpasswd -c /home/username/domain.ru/.htpasswd username

Будет создан файл .htpasswd и в нем строчка вида 

username:$apr1$bkS4zPQl$SyGLA9oP75L5uM5GHpe9A2

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

Теперь размещаем .htaccess в корневом каталоге нашего тестового сайта (test/public)

AuthType Basic
AuthName "Protected Area"
AuthBasicProvider file
AuthUserFile "/путь_к_файлу_паролей"
Require user username
<Files *.html>
allow from all
satisfy any
</Files>

Раздел Files не обязателен, но здесь показано, что вы можете ограничить только отдельные файлы или их типы.

После этого доступ к вашему тестовому сайту будет возможен только после ввода пароля или логина. Обратите внимание на правильность пути к файлу паролей, в случае ошибки будет 500 ошибка сервера.

Таким образом удобно размещать сайты-заглушки для доменов, на которых еще нет сайта, но надо, чтобы был, а также статические или не очень ресурсоемкие сайты.