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

Перенаправление поддомена с подстановочными знаками в папку без изменения URL-адреса

Итак, я настроил свой файл htaccess, он выглядит так:

Options +FollowSymLinks

RewriteEngine on

RewriteBase /

# MAGIC
RewriteCond $1 !/$
RewriteCond $1 !\.
RewriteRule ^(.+)$ /$1/ [R=301,L]
# //MAGIC

RewriteCond %{HTTP_HOST} !^www\.
RewriteCond %{HTTP_HOST} ^([a-z0-9][-a-z0-9]+)\.domain\.com
RewriteCond %{REQUEST_URI} !^/subdomains/
RewriteRule ^(.*)$ /subdomains/%1/$1 [P,NC,QSA]

Я работаю вполне нормально, он прекрасно руководит phpmyadmin.domain.com к phpmyadmin.domain.com/subdomains/phpmyadmin/

Но я думаю, что это довольно некрасиво, это показывает это в URL-адресе. Поэтому я хочу, чтобы он перенаправлял его беззвучно, чтобы он по-прежнему указывал на phpmyadmin.domain.com/subdomains/phpmyadmin/ но клиент может только видеть phpmyadmin.domain.com

Я искал вокруг, но не нашел ничего, что работало так, как я хотел. Есть ли у кого-нибудь идеи, как это исправить?

Вы слишком много работаете. Попробуйте использовать VirtualDocumentRoot с переменной. %1 будет использовать первую часть домена, или %-3 будет использовать третью и последнюю часть (оба представляют то же самое для вашего случая). Вам нужно будет включить модуль mod_vhost_alias чтобы это работало.

<VirtualHost *:80>
  VirtualDocumentRoot /var/www/%1
  ServerName www.domain.com
  ServerAlias *.domain.com
</VirtualHost>