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

Перезапись subdomain.domain.com при наличии других «поддоменов»

Мой httpd.conf выглядит так:

NameVirtualHost 12.34.56.78:80

<VirtualHost 12.34.56.78:80>
DocumentRoot /var/www/html/site
ServerName www.example.com

 <IfModule mod_rewrite.c>
    RewriteEngine On
    ...
</IfModule>
</VirtualHost>

<VirtualHost 12.34.56.78:80>
ServerName blog.example.com
DocumentRoot /var/www/html/blog
</VirtualHost>

Listen *:2194

<VirtualHost *:2194>
   Redirect / http://mgr.example.com/
</VirtualHost>

Я хочу иметь возможность включать «категории» в качестве поддоменов, т.е. если пользователь обращается к:

science.example.com

Он должен показать ему этот URL, но показать ему содержимое www.example.com/science.php

Это не обязательно должен быть общий подход / подход на основе подстановочных знаков - этих категорий будет небольшое количество, которое я могу указать индивидуально. Я просто не хочу, чтобы все, что я добавляло, мешало существующему функционированию сайта.

Как я могу это сделать?

Добавить:

ServerAlias *.example.com

на виртуальный хост и используйте эти правила перезаписи:

Options +FollowSymLinks 
RewriteEngine on
RewriteCond %{HTTP_HOST} !^(www)\. [NC]
RewriteCond %{HTTP_HOST} ^(.*)\.example\.com [NC]
RewriteRule (.*) http://www.example.com/%1 [R=301,L]

Если у вас уже есть субдомен, например. subsub.example.com, явно заданный как ServerName / ServerAlias ​​для другого виртуального хоста, он будет иметь приоритет над виртуальными хостами wildxard