У меня есть папка с сайтами: /var/www
У меня есть домен: example.com
Я хочу написать правило в моем httpd.conf
который установит псевдоним для каждого сайта в /var/www
.
Например: /var/www/hello/public
можно получить через example.com/hello
.
На данный момент я просто вручную пишу определения псевдонимов для каждого сайта: Alias /hello "/var/www/hello/public/"
Самым простым решением было бы использовать mod_vhost_alias вместо. Это не делает именно то, что вы описали, но это очень близко.
vhost_alias_module
используя любую технику, которую предпочитает ваш дистрибутив (a2enmod vhost_alias
в дистрибутивах на основе Debian).Добавьте эти директивы в httpd.conf
:
UseCanonicalName Off
VirtualDocumentRoot /var/www/%1/public
Создайте запись DNS с подстановочными знаками для example.com, чтобы любой поддомен example.com направлялся на ваш сервер.
Теперь при доступе к hello.example.com будет загружен сайт, расположенный в /var/www/hello/public
.
В качестве альтернативы, как упоминал Габор, вы можете использовать mod_rewrite. Решение, которое я собираюсь описать, предполагает, что у вас нет другого контента на example.com.
a2enmod rewrite
в дистрибутивах на основе Debian).Добавьте эти директивы в VirtualHost
для example.com:
RewriteEngine On
RewriteRule ^([^/]+)(.*) /var/www/$1/public/$2
Это перепишет запрос "example.com/hello/steve" на /var/www/hello/public/steve
.
Создайте vhost для своего домена и webroot. Напишите правило перезаписи вместо псевдонима.