Я запускаю пару десятков сайтов на своем тестовом VPS и в настоящее время использую mod_vhost_alias, чтобы избежать необходимости использования нового VirtualHost каждый раз, когда я запускаю новый сайт. Моя текущая конфигурация выглядит так:Использование перепрограммирования для mod_vhost_alias
<VirtualHost *:80>
ServerName my.servername.com
ServerAlias *
VirtualDocumentRoot /var/www/%0/public_html
</VirtualHost>
Внутри каталога my/var/www каждый сайт имеет свой собственный каталог. Например, путь к моей личной странице - /var/www/personalsite.com/public_html/index.php. Это отлично подходит для запросов к http://personalsite.com.
Тем не менее, это не сработает, когда запросы заходят по адресу http: // www .personalsite.com. Для некоторых из моих других сайтов у меня есть обратная проблема: каталог может быть /var/www/www.sitename.com/public_html, поэтому запросы для http://www.sitename.com в порядке. Однако запросы для http://sitename.com не работают.
Есть ли способ настроить мою конфигурацию Apache, чтобы при входе запроса она выполняла следующее? Имеются ли какие-либо последствия для работы таким образом?
В псевдокоде:
1. Check if the directory or file exists. If it does, skip the rest of the rules
(but don't stop, in case a local .htaccess has rules in it for pretty URLs
in WordPress or Concrete5)
2. If the file/directory does not exist:
1. If the host header starts with "www":
1. remove the www from the host header and try the first rule again.
2. If the host header does not start with "www":
1. add "www" to the beginning of the host header and try the first rule again
3. If it still fails after trying both conditions:
1. Go to a 404 error page
Я сейчас делаю это около 20 VirtualHosts, но это кажется смешным, когда я должен добавить новый для каждого сайта. Точка использования mod_vhost_alias заключалась в том, чтобы избежать необходимости во всех этих VirtualHosts в первую очередь.
Спасибо за ответ, но я не думаю, что это вполне соответствует тому, что я пытаюсь сделать. Одна из моих целей - НЕ иметь призрак для каждого сайта. Я переписал то, что я пытаюсь сделать в псевдокоде, и обновил вопрос. Это имеет смысл? – CristosLC