2014-05-24 1 views
0

Я запускаю пару десятков сайтов на своем тестовом 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 в первую очередь.

ответ

0

Предполагая, что вы все в порядке с перенаправлением пользователей, вы можете использовать один из методов из https://stackoverflow.com/a/2361508/881615:

  • установить либо mod_rewrite правила для удаления ведущего WWW. от запросов,
  • или установить перенаправление в каждом vhost для перенаправления запросов с ведущим www. к домену верхнего уровня
+0

Спасибо за ответ, но я не думаю, что это вполне соответствует тому, что я пытаюсь сделать. Одна из моих целей - НЕ иметь призрак для каждого сайта. Я переписал то, что я пытаюсь сделать в псевдокоде, и обновил вопрос. Это имеет смысл? – CristosLC