Назад | Перейти на главную страницу

Как установить VirtualDocumentRoot на основе файлов внутри

Я пытаюсь настроить Apache для использования директивы VirtualDocumentRoot, но мои сайты не совсем одинаковые. У большинства сайтов есть папка drupal, которая должна быть корнем, но есть несколько действительно старых сайтов drupal, несколько сайтов rails, некоторые сайты django и т.д., которые хотят, чтобы корень документа был / или какой-то другой папкой.

Есть ли способ настроить VirtualDocumentRoot на основе условного выражения или есть способ использовать RewriteRule / Cond, чтобы определить, что это неправильная папка, если есть папка drupal или общая папка?

Вот что у меня есть на данный момент:

<VirtualHost *:80>
  # Wildcard ServerAlias, this is the default vhost if no specific vhost matches first.
  ServerAlias *.unicorn.devserver.com

  # Automatic ServerName, based on the HTTP_HOST header.
  UseCanonicalName Off

  # Automatic DocumentRoot.  This uses the 4th level domain name as the document root,
  # for example http://bar.foo.baz.com/ would respond with /Users/vosechu/Sites/bar/drupal.
  VirtualDocumentRoot /Users/vosechu/Sites/%-4/drupal
</VirtualHost>

Заранее спасибо!

-Чак

Is there a way to set up VirtualDocumentRoot based on a conditional?

Нет - Просто не так VirtualDocumentRoot работает - он отделяет часть имени хоста и вставляет ее в путь.


or is there a way to use RewriteRule/Cond to detect that '/' is the incorrect folder if there is a drupal folder or a public folder?

Я не на 100% уверен, о чем вы здесь спрашиваете, но это звучит как «Есть ли способ заставить Apache вести себя по-другому в зависимости от содержимого каталога?» - Если да, то ответ будет почти отрицательным:
Apache просто служит тому, что ему дано. Он знает способ «узнать», является ли каталог сайтом Drupal (он просто видит файл PHP и запускает интерпретатор PHP, потому что это то, что ему было сказано делать с файлами PHP, и выдает результаты, которые ему дает интерпретатор. назад).


Кажется, вы пытаетесь засунуть квадратный стержень ваших радикально разных участков в круглое отверстие VirtualDocumentRoot (что действительно лучше всего подходит для мертвых простых сайтов). В вашем случае, я думаю, вам действительно нужно создавать отдельные виртуальные хосты для каждого сайта и отдельно управлять их конфигурациями.