сайты доступны (apache) и httpd.conf для WAMP - благодаря чему XXXXX.domain.com автоматически направляется - PullRequest
3 голосов
/ 04 июня 2011

У меня сейчас есть это в моем файле httpd.conf в WAMP:

NameVirtualHost 127.0.0.1

<VirtualHost 127.0.0.1>
    ServerAlias *.dev.co.uk
    UseCanonicalName Off
    VirtualDocumentRoot D:/wamp/www/%1/httpdocs
</VirtualHost>

Я создал каталог "foo.bar", а затем попытался http://foo.bar.dev.co.uk, и я получил это:

Не найдено

Запрошенный URL / не найден в этот сервер.

Я хочу, чтобы эта настройка работала на моем локальном сервере Apache, а также на моем сервере Wamp (я думаю, что синтаксис немного отличается) Если мне нужно дать больше информации, оставьте комментарий, и я обновлю.

Ответы [ 2 ]

2 голосов
/ 13 июня 2011

Я никогда не использовал VirtualDocumentRoot, но, увидев, что вы не получаете никаких ответов, я попробую.

Согласно документам по интерполяции имен каталогов , может показаться, что ваша проблема заключается в использовании %1, который будет соответствовать только "foo" для http://foo.bar.dev.co.uk.

Чтобы соответствовать "foo.bar", попробуйте:

VirtualDocumentRoot D:/wamp/www/%1.0.%2.0/httpdocs

%1 соответствует «foo», а %2 соответствует «bar». Добавление .0, добавляемое к каждому формату, позволяет нам включать точку между foo и bar (поскольку . также используется в качестве оператора для извлечения подстроки совпадающих слов).

Если это не сработает, проверьте журналы, чтобы увидеть, какой каталог Apache действительно ищет. Это может дать подсказки относительно того, что пошло не так.

Обновление

В ответ на:

"Это делает foo.bar.dev.co.uk однако, к сожалению, это останавливается foo.dev.co.uk с работы, есть идеи? "

Использовать интерполяцию имен каталогов для сопоставления псевдонимов с неопределенным числом поддоменов довольно сложно.

Самый простой подход - просто использовать %0 и иметь каталоги, названные по имени полного доменного имени.

VirtualDocumentRoot D:/wamp/www/%0/httpdocs

Это будет соответствовать каталогам D:/wamp/www/foo.bar.dev.co.uk/httpdocs и D:/wamp/www/foo.dev.co.uk/httpdocs.

Если у вас ограниченное подмножество возможных доменов, может быть найдено более конкретное решение. Например, если у вас есть:

  • "foo.dev.co.uk"
  • "bar.dev.co.uk"
  • "foo.bar.dev.co.uk"
  • .. и другие домены в форме "X.Y.dev.co.uk"

тогда вы можете обработать «foo» и «bar» предыдущего блока VirtualHost перед обработкой других доменов.

<VirtualHost 127.0.0.1>
    ServerAlias foo.dev.co.uk 
    ServerAlias bar.dev.co.uk
    UseCanonicalName Off
    VirtualDocumentRoot D:/wamp/www/%1/httpdocs
</VirtualHost>

<VirtualHost 127.0.0.1>
    ServerAlias *.dev.co.uk
    UseCanonicalName Off
    VirtualDocumentRoot D:/wamp/www/%1.0.%2.0/httpdocs
</VirtualHost>
0 голосов
/ 17 июня 2011

Некоторые комментарии, которые могут поддерживать:

1) для разрешения вашего ip localhost
Вы должны настроить браузер на то, чтобы найти то, что на 127.0.0.1.Поэтому, если этого не сделано, сначала отредактируйте файл hosts на компьютере с операционной системой Windows C: \ Windows \ System32 \ drivers \ etc \ hosts :

127.0.0.1 foo.bar.dev.co.uk

При условии, что это невозможно использовать подстановочные знаки в этом файле хоста.Для этого вы должны установить этот .

2) порт:
Убедитесь, что ваш сервер прослушивает порт http по умолчанию, например, не забудьтечтобы добавить эту директиву в ваш файл httpd.conf (как я его не видел):

Listen 80

3) Control:
As you 'Используя директиву NameVirtualHost XXX.XXX.XXX.XXX , убедитесь, что значение точно соответствует директиве NameVirtualHost .Похоже, что это ваш случай.

4) Путь:
Возможно, это глупое замечание с моей стороны, как пользователя Linux, но я думал, что ОС Windows требуетобратная косая черта для пути, а не косая черта.Но я могу определенно ошибаться и не хотел бы никого вводить в заблуждение.Но так как "все директивы в этом Интерполяции имени каталога модуля интерполируют строку в путь, я бы проверил результат полученной интерполированной строки. Просьба посмотреть следующую точку.

5) Заполнители:
Убедитесь, что модуль псевдоним vhost загружен в ваш wamp. Я бы также рекомендовал вам добавить директиву в vhost, чтобы вы могли проверить в журналах, что требуетсяинтерполируйте URL, найдите, что не так, и исправьте соответственно настройки apache:

LogFormat "%h %l %u %t \"%r\" %>s %b" common
CustomLog logs/access_log common 

6) Существующее решение ...
Существующая проблема всегда имеет существующие решения: См. там

Как только вы проверите эти пункты, я думаю, что решение скоро появится.

...