У меня есть сервер с несколькими разными доменами (каждый в отдельном VHost). Каждый VHost работает нормально, правильно выполняет PHP и т. Д. Для примера, два домена - foo.com и bar.com. Я пытаюсь создать псевдоним на foo.com, который будет включать файлы из каталога на bar.com. Легко, правда?
# Apache config file for foo.com
Alias /bar-alias /var/www/vhosts/bar.com/httpdocs/somedir
<Directory "/var/www/vhosts/bar.com/httpdocs/somedir">
Options Indexes FollowSymLinks
Order Allow,Deny
Allow From All
Deny From None
</Directory>
Он работает нормально и изящно, за исключением попыток запустить скрипт PHP. В моей конфигурации переход на www.foo.com/bar-alias/script.php возвращает исходный код скрипта вместо его выполнения. Я бился головой об стену, пытаясь понять, как заставить Apache выполнять PHP таким образом, и рисую пустое место.
(Если это вообще возможно, мне бы хотелось избежать каких-либо символических ссылок и тому подобного. Это похоже на то, что я должен уметь делать исключительно в конфигурации Apache, я просто не могу понять, как это сделать.)
На самом деле я считать Я понял. Из чистого разочарования я скопировал следующее из более ранней части конфигов и вставил их в <Directory>
блок для этого псевдонима ...
<IfModule sapi_apache2.c>
php_admin_flag engine on
php_admin_flag safe_mode off
</IfModule>
<IfModule mod_php5.c>
php_admin_flag engine on
php_admin_flag safe_mode off
</IfModule>
И о чудо, он начал работать так, как я ожидал. Я собираюсь долбить его еще (на самом деле мне это не нужно), но пока он работает достаточно хорошо.
Похоже, псевдоним может быть выполнен до того, как завершится чтение полной http conf. Следующая строка находится до или после вашего псевдонима? Попробуйте переместить его выше:
Include conf.d/*.conf