Используя Ubuntu 16.04 и Apache 2.4.7 я хочу сделать два различных типов userdir.
/home/user/public_html/
и получил доступ только с помощью www.sample.com/~user/. (www2.sample.com/~user/ не должен работать.)/home/user/public_html2/
и получил доступ только с помощью www2.sample.com/~user/. (www.sample.com/~user/ не должен работать.)Я закончил делать два виртуальных хоста, использующие/etc/apache2/sites-availabile/000-default.conf, и затем попытался изменить mods-available/userdir.conf. Это было легко сделать или public_html или public_html2 доступным, но не удалось сделать обоих доступными с различными именами хостов. Вы могли учить меня, как сделать это?
Я не могу написать код, как это, но 000-default.conf, и userdir.conf похожи на них:
000-default.conf
<VirtualHost *:80>
ServerAdmin admin@sample.com
DocumentRoot /var/www/html/www
ServerName www.sample.com
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</irtualHost>
<VirtualHost *:80>
ServerAdmin admin@sample.com
DocumentRoot /var/www/html/www2
ServerName www2.sample.com
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</irtualHost>
userdir.conf (Первая половина этого кода является исходным userdir.conf. Я просто скопировал и вставил ниже исходного и изменил public_html на public_html2.)
<IfModule mod_userdir.c>
UserDir public_html
UserDir disabled root
<Directory /home/*/public_html>
AllowOverride FileInfo AuthConfig Limit Indexes
Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec
<Limit GET POST OPTIONS>
Require all granted
</Limit>
<LimitExcept GET POST OPTIONS>
Require all denied
</LimitExcept>
</Directory>
</IfModule>
<IfModule mod_userdir.c>
UserDir public_html2
UserDir disabled root
<Directory /home/*/public_html2>
AllowOverride FileInfo AuthConfig Limit Indexes
Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec
<Limit GET POST OPTIONS>
Require all granted
</Limit>
<LimitExcept GET POST OPTIONS>
Require all denied
</LimitExcept>
</Directory>
</IfModule>
Я не уверен я, 100% понимают Ваш вопрос, но я предполагаю, что Вы просите иметь 2 различных домена, где каждый из них использует различный UserDir.
РЕДАКТИРОВАНИЕ : Вы были на правильном пути. Единственная вещь у Вас были пропавшие без вести, то, что необходимо было поместить каждую из двух конфигураций UserDir в их соответствующей конфигурации VirtualHost, как замечено ниже.
Для этого, необходимо создать два виртуальных хоста, и каждый Виртуальный хост имел бы свои собственные конфигурации UserDir.
первый виртуальный хост содержал бы следующее:
# /etc/apache2/sites-available/com.sample.www.conf
<VirtualHost *:80>
ServerName www.sample.com
<IfModule mod_userdir.c>
UserDir public_html
UserDir disabled root
<Directory /home/*/public_html>
AllowOverride FileInfo AuthConfig Limit Indexes
Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec
<Limit GET POST OPTIONS>
Require all granted
</Limit>
<LimitExcept GET POST OPTIONS>
Require all denied
</LimitExcept>
</Directory>
</IfModule>
</VirtualHost>
второй виртуальный хост содержал бы следующее:
# /etc/apache2/sites-available/com.sample.www2.conf
<VirtualHost *:80>
ServerName www2.sample.com
UserDir public_html2
<IfModule mod_userdir.c>
UserDir disabled root
<Directory /home/*/public_html2>
AllowOverride FileInfo AuthConfig Limit Indexes
Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec
<Limit GET POST OPTIONS>
Require all granted
</Limit>
<LimitExcept GET POST OPTIONS>
Require all denied
</LimitExcept>
</Directory>
</IfModule>
</VirtualHost>
, После того как это сделано, необходимо включить 2 виртуальных файла конфигурации хоста и Apache перезапуска.
$ sude a2dissite 000-default.conf
$ sudo a2ensite com.sample.www.conf
$ sudo a2ensite com.sample.www2.conf
$ sudo apache2ctl restart
Теперь, когда Вы открываете www.sample.com/~dan/
, он будет использовать /home/dan/public_html/
и когда Вы откроете www2.sample.com/~dan/
, он будет использовать /home/dan/public_html2/