Как настроить поддомен на папку сайта
Задача перенаправления поддомена (например, test.site.com) на конкретную папку основного домена (например, site.com/test) часто возникает при разработке и тестировании проектов. Это позволяет изолировать версии сайта или отдельные разделы, сохраняя единую структуру хостинга. В этой статье мы рассмотрим универсальное решение, которое работает для любого веб-сервера (Apache, Nginx, IIS), без привязки к конкретному ПО.
Принцип работы и общая схема
Независимо от типа веб-сервера, логика одинакова: поддомен test.site.com должен обращаться к тому же корневому каталогу, что и основной домен, но при этом загружать файлы из подпапки test. Это достигается с помощью правил перезаписи URL (rewrite) или конфигурации виртуальных хостов. Ключевой момент - корректная обработка путей, чтобы ссылки внутри поддомена не ломались.
Настройка на Apache (через .htaccess)
Apache - самый популярный веб-сервер, и для него достаточно добавить несколько строк в файл .htaccess в корне домена site.com. Убедитесь, что модуль mod_rewrite включён.
RewriteEngine On
RewriteCond %{HTTP_HOST} ^test\.site\.com$ [NC]
RewriteRule ^(.*)$ /test/$1 [L]Это правило проверяет, что запрос пришёл на поддомен test.site.com, и перенаправляет его в папку /test/, сохраняя путь после домена. Например, запрос test.site.com/page.html откроет файл site.com/test/page.html.
Настройка на Nginx (через server block)
Для Nginx создайте отдельный server block для поддомена или используйте условие внутри основного блока. Рекомендуется второй вариант для простоты.
server {
listen 80;
server_name site.com test.site.com;
if ($host = test.site.com) {
rewrite ^/(.*)$ /test/$1 last;
}
root /var/www/site;
index index.php index.html;
}Важно: в Nginx использование if в контексте location может быть ненадёжным, поэтому для продакшена лучше создать отдельный server block с директивой root /var/www/site/test;. Однако приведённый выше код подходит для быстрого тестирования.
Настройка на IIS (через URL Rewrite)
В IIS используется модуль URL Rewrite. Добавьте правило в файл web.config корневого сайта.
<rewrite>
<rules>
<rule name="Subdomain to folder" stopProcessing="true">
<match url=".*" />
<conditions>
<add input="{HTTP_HOST}" pattern="^test\.site\.com$" />
</conditions>
<action type="Rewrite" url="/test/{R:0}" />
</rule>
</rules>
</rewrite>Это правило сработает для всех запросов на поддомен test.site.com, перенаправляя их в папку /test/.
Важные нюансы и рекомендации
- Относительные ссылки: если в папке
testиспользуются относительные пути (например,/css/style.css), они будут корректно подгружаться, так как браузер видит поддомен. Но если ссылки абсолютные (сsite.com), они могут указывать на основной домен - используйте относительные пути или переменные среды. - PHP и другие скрипты: при использовании rewrite сервер обрабатывает файлы в папке
testтак, как будто они находятся в корне поддомена. Это может повлиять на работу скриптов, если они используют$_SERVER['DOCUMENT_ROOT']- для поддомена он останется корнем основного сайта. Исправляется установкойSetEnv DOCUMENT_ROOT /var/www/site/test(для Apache) или аналогичной настройкой. - DNS-записи: не забудьте создать A-запись или CNAME для поддомена
test.site.com, указывающую на IP-адрес сервера. Без этого настройка не сработает.
Проверка и отладка
После настройки перейдите по адресу test.site.com - должно открыться содержимое папки test. Если возникает 404 ошибка, проверьте: включён ли модуль rewrite, корректно ли указаны пути, и доступны ли файлы в целевой папке. Для Apache можно временно включить логирование rewrite (RewriteLogLevel 9), чтобы увидеть процесс обработки.
Таким образом, настройка поддомена на папку сайта - задача, решаемая для любого веб-сервера с помощью правил перезаписи. Выберите подходящий метод под вашу платформу и следуйте инструкции, чтобы изолировать тестовые версии или разделы проекта.