Мой 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