Назад | Перейти на главную страницу

создавать поддомены с помощью .htaccess в Plesk

Я пытаюсь сопоставить несколько поддоменов с каталогами в моем ROOT, используя .htaccess (подходит ли для этого слово «карта»?)

Сервер использует Plesk, с которым я не особо знаком (cPanel справился бы с этим автоматически). Все поддомены были добавлены как «Псевдонимы домена», поэтому все, что мне нужно сделать, это указать правильный каталог.

например: 1. i.domain.com -> domain.com/i/ 2. js.domain.com -> domain.com/js/ 3. css.domain.com -> domain.com/css/

Я пробовал много фрагментов, которые нашел в Google, в частности Stack Overflow. Это код, который мне ближе всего, работая для (1), но по необъяснимым причинам терпящий неудачу для (2) + (3), по-прежнему указывая на ROOT, не глядя в каталог.

RewriteCond %{HTTP_HOST} ^i\.domain\.co\.uk$ [NC]
RewriteCond %{HTTP_HOST} ^js\.domain\.co\.uk$ [NC]
RewriteCond %{HTTP_HOST} ^css\.domain\.co\.uk$ [NC]
RewriteRule (.*) %1/$1 [L]

Признаюсь, я не особо разбираюсь в .htaccess или в том, как работает DNS, PHP - моя игра.

Любая помощь, очень приветствуется.

Что ж, Plesk работает по-другому, поэтому вам нужно делать что-то, как в Plesk;)

Корень документа субдомена в Plesk будет выглядеть примерно так:

/var/www/vhosts/domain.com/subdomains/subdomain/httpdocs

Как и в вашем вопросе, чтобы указать a.domain.com на domain.com/a, вам не нужен .htaccess. Просто измените DocumentRoot вашего субдомена a.domain.com, указывающего на /var/www/vhosts/domain.com/httpdocs/a. Для этого вам нужно добавить vhost.conf в каталог conf поддомена с новыми настройками DocumentRoot.

Создайте файл с именем vhost.conf со следующим содержанием,

DocumentRoot /var/www/vhosts/domain.com/httpdocs/a

Теперь загрузите этот файл в /var/www/vhosts/domain.com/subdomains/subdomain/conf папка.

Теперь выполните следующую команду, чтобы включить пользовательский conf вместе с другими включениями httpd.

/usr/local/psa/admin/bin/websrvmng -a

Перезапустите apache и убедитесь, что субдомен теперь обслуживает страницы из правильного места.

PS: Иногда версия Plesk имеет значение (для команд, которые вы выполняете), поэтому не стесняйтесь спрашивать, возникнут ли у вас проблемы с ее настройкой.

Спасибо за ваш ответ SparX - я уверен, что это правильно, вы четко знаете свое дело.

Мой хост посоветовал мне не использовать стандартную структуру каталогов поддоменов в Plesk, так как мне нужны разрешения RWX для большинства поддоменов из основного домена document_root.

Это означало, что мне пришлось удалить почти все ограничения open_basedir, указанные выше. /var/www/vhosts/domain.com/. Я не осознавал, что вызываю серьезные проблемы с безопасностью - наивность нас, разработчиков PHP!

Поэтому они посоветовали мне добавить свои поддомены в «псевдонимы домена», переместить каталоги в document_root основного домена и использовать .htaccess для перезаписи запросов.

После полных выходных выдергивания волос я нашел этот ответ в Stack overflow: https://stackoverflow.com/questions/4593978/redirecting-to-multiple-virtual-subdomains-using-htaccess

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

# Internal rewrite for the image subdomain
#  - Match the subdomain exactly
RewriteCond %{HTTP_HOST} ^i\.mydomain\.com$
#  - Check to see if the rewrite already happened (prevent
#    infinite loop of internal rewrites)
RewriteCond %{REQUEST_URI} !^/i(/.*|$)
#  - Rewrite the URL to the subdirectory
RewriteRule ^(.*) /i/$1 [L]

Это позаботилось о i.mydomain.com, поэтому я просто скопировал его для c.domain.com и js.domain.com