Я устанавливаю свои виртуальные хосты Apache2 на сервере Debian Squeeze следующим образом:
имя файла: something.mydomain.com
Alias /whatever /var/www/whatever.mydomain.com
<VirtualHost *:80>
ServerAlias whatever.mydomain.com
ServerAdmin myemail@mydomain.com
VirtualDocumentRoot /var/www/%0
ErrorLog /var/log/apache2/whatever.mydomain.com-error.log
CustomLog /var/log/apache2/whatever.mydomain.com-access.log combined
</VirtualHost>
<Directory /var/www/whatever.mydomain.com>
AuthPAM_Enabled On
AuthType basic
AuthName "Authorization Required to proceed"
AuthBasicAuthoritative off
AuthUserFile /dev/null
Require valid-user
</Directory>
Я хотел бы обслуживать один и тот же сайт с двумя URL-адресами: something.mydomain.com и www.mydomain.com/whatever
Итак, чтобы решить эту проблему, я настроил псевдоним / something /var/www/whatever.mydomain.com в начале файла. Но я не знаю, хорошая ли это практика. А насчет настройки VirtualHost? Есть что-то, что можно сделать лучше?
И последний вопрос: есть ли способ использовать переменные внутри файла? В качестве примера повторить% 0 в других местах, кроме VirtualDocumentRoot?
Заранее спасибо,
РЕДАКТИРОВАТЬ: у меня возникла новая проблема. С глобальным псевдонимом все мои виртуальные хосты будут отвечать на псевдоним / любой, и я хочу, чтобы псевдоним применялся только к www.mydomain.com. В данный момент я безуспешно борюсь с RedirectMatch. Я использую перенаправление вместо псевдонима, потому что с псевдонимом журнал доступа и ошибок не попадает в файл журнала виртуального хоста.
Возможно, вы захотите разместить псевдоним на собственном виртуальном хосте. Например:
<VirtualHost *:80>
ServerName www.mydomain.com
ServerAdmin myemail@mydomain.com
DocumentRoot /var/www/whatever.mydomain.com
Alias /whatever /var/www/whatever.mydomain.com
ErrorLog /var/log/apache2/www.mydomain.com-error.log
CustomLog /var/log/apache2/www.mydomain.com-access.log combined
</VirtualHost>
Я бы сделал это именно так, но, конечно, есть масса способов сделать что-то в Apache должным образом. Если работает, значит работает ...
Что касается вашего последнего вопроса: вы действительно не можете использовать переменные в файлах конфигурации (за исключением нескольких исключений), но есть сторонние модули, которые, возможно, стоит изучить. Один из них - mod_macro: http://people.apache.org/~fabien/mod_macro/ Другой способ сделать файлы конфигурации более динамичными - это mod_perl, но это действительно сложная тема.