Эта тема на forum.dklab.ru


YAT: Указание доменного имени для хоста вручную.
Искал на форуме, но не нашел решения этой проблемы. Если оно всё-же есть - ткните...

Проблема такова.

Необходимо создать такую структуру каталога:

/home/domaincom/public_html/ (корень сайта)
и
/home/domaincom/public_html/cgi-bin/ (для скриптов соответственно)

А сам сайт должне быть доступен, как http://www.domain.com/, а не http://domaincom/.

Если с нестандартнымми именами (public_html вместо www) и нестандартным расположением (/public_html/cgi-bin/ вместо /cgi-bin/) можно разобраться, то заморочка с доменным именем поставила меня в тупик...

Подскажете?
Ant:
Если с нестандартнымми именами (public_html вместо www) и нестандартным расположением (/public_html/cgi-bin/ вместо /cgi-bin/) можно разобраться
Смотрите форум «Полезные советы».

то заморочка с доменным именем поставила меня в тупик...
А зачем Вам это надо? Открывайте как «http://www.domain.com/» и всё тут.
YAT:
Хочется "синхронизации" с структурой каталогов у хостера.

У него именно так: /home/domaincom/

У меня же при такой структуре домен вызывается как http://domaincom

А хочеться нормально - http://www.domain.com
Ant:
А, понял. Извините, я не внимательно прочитал Ваш первый пост.

В файле «httpd.conf» есть такие строчки:
#
# Если вы вручную хотите создать виртуальный хост со специфическими
# настройками, то сделайте это сразу же после данного комментария.
# Не помещайте "рукодельные" хосты в конец файла, иначе они не будут
# доступны!
#
# В контейнер VirtualHost может включаться почти любая директива Apache.
# Пример использования директивы VirtualHost:
#
#<VirtualHost ip.address.of.host.some_domain.com>
# ServerAdmin webmaster@host.some_domain.com
# DocumentRoot /www/docs/host.some_domain.com
# ServerName host.some_domain.com
# ErrorLog logs/host.some_domain.com-error_log
# CustomLog logs/host.some_domain.com-access_log common
#</VirtualHost>
#
#<VirtualHost _default_:*>
#</VirtualHost>


Сами продолжите? (-:
Ant:
То есть, поясняю, после этих строк, в файле «httpd.conf», Вы ручками пропишите вот по этой статье: http://dklab.ru/doc/apache (см. там «Виртуальные хосты Apache — как это настроить?») виртуальный хост с нужными Вам настройками.
YAT:
Какой ip нужно прописывать этому хосту?
И нужно ли будет его потом прописывать в виндовом hosts? Или Денвер сам "подхватит" виртуальный хост?
Ant:
Какой ip нужно прописывать этому хосту?
127.0.0.1

И нужно ли будет его потом прописывать в виндовом hosts?
Нет, как я понимаю. Тут уж надо всё самому делать. (-;
Ant:
Нет, как я понимаю. Тут уж надо всё самому делать. (-;
В смысле, да. Блин, что-то сегодня со мной не то происходит. (-:
YAT:
К сожалению вариант с прописыванием домена в hosts - не подходит...
Получается, что тогда я не смогу попасть на "реальный" сайт, не удалив его из hosts.

Денвер свои хосты автоматом отключает... А тут каждый раз править файл... )-:
Ant:
Ну, слушайте, а кому сейчас легко? Вы и так и этак хотите. Такого не бывает.

Хотя нет, наверно бывает. В данном случае поможет хирургическое вмешательство (да простит меня ДК). (-:

Открываем файл «/etc/scripts/_lib/ParseHosts.pm». Находим в нём такие строки:

# hash insertHosts(out string $hosts, %dom)
# Модифицируетс строку $hosts (это содержимое файла c:/windows/hosts)
# так, чтобы там были добавлены хосты %dom. Если один из хостов уже
# присутствует в $hosts (например, с другим ip-адресом), он не торогается.
# Возвращает хосты, которые были добавлены.
sub insertHosts
{ local (*hosts, %dom)=(\$_[0], @_[1..$#_]);
my %added=();
foreach my $h (sort cmpHost keys %dom) {


Заменяем этот фрагмент на

# hash insertHosts(out string $hosts, %dom)
# Модифицируетс строку $hosts (это содержимое файла c:/windows/hosts)
# так, чтобы там были добавлены хосты %dom. Если один из хостов уже
# присутствует в $hosts (например, с другим ip-адресом), он не торогается.
# Возвращает хосты, которые были добавлены.
sub insertHosts
{ local (*hosts, %dom)=(\$_[0], @_[1..$#_]);
my %added=();
$dom{'domain.com'}=$dom{'www.domain.com'}='127.0.0.1';
foreach my $h (sort cmpHost keys %dom) {

То есть, по сути, добавляется «$dom{'domain.com'}=$dom{'www.domain.com'}='127.0.0.1';».

Возможно, что строки эти не будут точно совпадать — у меня не самая последняя версия Денвера стоит. Если что — дайте мне знать. Всё должно, по идее, работать.
Ant:
Кстати, обращение к ДК: может быть сделать специальный файл, где можно будет прописывать такие вот хосты (что бы Денвер не только сам проверял «home», но и ещё смотрел записи в специальном файле)? Насколько мне известно, такого ещё не было реализовано.
Ant:
YAT:
Да, только учтите, что при таком вмешательстве, Денвер теперь всегда (пока не удалить эту запись, конечно) будет прописывать, при своём старте, эти домены в файл «hosts» (а по завершении своей работы — удалять).
YAT:
Да, спасибо, я попробую...
Дмитрий Котеров:
YAT:
Поддержка схемы с public_html по умолчанию имеется в последней версии Денвера.

может быть сделать специальный файл, где можно будет прописывать такие вот хосты (что бы Денвер не только сам проверял «home», но и ещё смотрел записи в специальном файле)?
Очень разумное замечание, добавляю в TODO.
Дмитрий Котеров:
СТОП!
1. Создаем /home/AAA/.htaccess, прописываем в него:

#dnwr_name zzz.zzz

2. Исправляем шаблон хоста в httpd.conf, директива ServerAlias:

# ServerAlias [то, что было раньше] "$&name"

3. Перезапускаем сервер.

Теперь хост с путем /home/AAA будет доступен как http://zzz.zzz.

Так что TODO не требуется. (-;
Дмитрий Котеров:
Кстати, есть еще один способ заставить Денвер обрабатывать произвольное имя у хоста. Для этого достаточно добавить в httpd.conf обычный виртуальный хост (с любыми настройками), а затем закооментировать его (#) и заменить DocumentRoot на DocumentRootMatch. Получится шаблон, но только с фиксированным именем хоста, путем и т.д. Он «развернется» в один-единственный хост при запуске Денвера.
Дмитрий Котеров:
Перенесено из форума: Денвер::Базовый пакет.
Перенесено в форум: Денвер::Полезные советы.
Ant:
Так и знал, что есть более «легальный» путь заставить Денвер так работать. (-:

Надо бы это дело в «Полезные советы»...
Ant:
(-:
YAT:
Воспользоваля методом Дмитрия с .htaccess и правкой httpd.conf
Все работает замечательно.

Большое спасибо за советы и за Денвер! =)
Gаndalf: усложнилась задачка ...
СТОП!!! !
1. Создал /home/bbb/.htaccess, прописал в него:
#dnwr_name0 domen.ws
#dnwr_name1 domen.bz
#dnwr_name2 domen.us
2. Исправил шаблон хоста в httpd.conf, директива ServerAlias:
# ServerAlias [то, что было раньше] "$&name0" "$&name1" "$&name2"
3. Перезапустил сервер.

ВСЁ ОК - Теперь хост с путем /home/bbb/ стал доступен как http://domen.ws/ http://domen.bz/ http://domen.us/

НО !!! в /home/bbb/www/ лежит ФОРУМ (/home/bbb/www/forum/)
так вот http://domen.ws/forum/ http://domen.bz/forum/ http://domen.us/forum/ работает, а http://forum.domen.ws/ и аналогичные НЕТ !
если положить форум так: (/home/bbb/forum/) то его вообще НЕ ВИДНО...
пробовал класть .htaccess в форум, но тщетно...

ЧТО ДЕЛАТЬ ?
з.ы. на хостинге именно так реализованы папки - стандарт cPanel ... (правде без всяких www - вообще не догоняю нах это сделали в денвере - везде всё в корне и рядом субдомены... - cPanel задаёт стандарты...)
з.ы.ы. мне было б идеально /home/bbb/ - корень (мультидоменный), /home/bbb/forum/ - субдомен равный поддиректории (/home/bbb/forum/ = http://domen.us/forum/ = http://forum.domen.us/ и аналогично для остальных доменов)
Дмитрий Котеров:
По смыслу http://bbb/forum/ не должна вести туда же, куда http://forum.bbb/. Потому что в первом случае у Вас скрипты оказываются расположены по URI /forum, а во втором - в корне, и все ссылки могут побиться (не говоря уж о проблемах безопасности). Денвер так и делает. (Алгоритм такой: "директории документов разных виртуальных хостов не должны иметь пересечения").

Ну а если в cpanel можно обращаться к доменам, как к директориям (и наоборот), то мне ее разработчиков просто-таки очень жаль. ;-)
Mithrandir: Кто знает как это реализуется в денвере
Ну флудить то все горазды... А вот ответить что делать мало кто :)
Я чётко описал как работает cPanel стоящая у 70% хостеров и что я хочу получить аналог дома...
Денвер - мощная среда и должна уметь такие простые вещи... Кто знает как это реализуется в денвере, скажите плиззз.
з.ы. а с урлами я сам разберусь в скриптах ;)
Евгений Галашин:
Mithrandir
DocumentRootMatch
Дмитрий Котеров:
Я еще раз говорю: в Денвере перекрытие директорий документов не будет по соображениям безопасности. И что там за cpanel, ему до лампочки. (Тем более, что фраза "у большинства хостеров", как мне кажется, не соответствует действительности - лично я не знаю ни одного из более-менее крупных.) Если хотите, чтоб было - правьте код парсинга шаблонов виртуального хоста, он весь в /etc/scripts/_lib находится.
Толковый:
Не знаю где задать этот вопрос, попробую здесь. Я новичок, поэтому не будьте слишком строгими. Языками php, perl и т.д не владею, владею html. У меня сайт написанный на php. Часть сайта в домене, часть в поддомене. Вставляю его в Денвер, запускаю главную страницу, она загружается но с ошибкой. Выдает:

Notice: Undefined variable: TemplateName in z:\home\maritalagency.org\www\config.php on line 25

типа возможная ошибка находится в config.php на 25 линии.

Но у меня есть подозрение что возможно надо изменить какие-то пути в файле config.php в домене, и config.inc.php в под домене. так как переходы с главной страницы на поддоменные страницы сайта не осществляются, открываясь сплошными ошибками.

Вопрос: Что надо сделать чтобы сайт работал в Денвере? Какие файлы подвергнуть редактированию, и что именно надо изменить чтобы все работало?

Буду благодарен за помощь!
Maus:
Что надо сделать чтобы сайт работал в Денвере?
отлаживать: http://phpfaq.ru/debug , сравнивать конфигурации хостов с работающей версией
Anonymous:
во вотором денвере успешно работали нестандартные хосты по принципу --

Кстати, есть еще один способ заставить Денвер обрабатывать произвольное имя у хоста. Для этого достаточно добавить в httpd.conf обычный виртуальный хост (с любыми настройками), а затем закооментировать его (#) и заменить DocumentRoot на DocumentRootMatch. Получится шаблон, но только с фиксированным именем хоста, путем и т.д. Он «развернется» в один-единственный хост при запуске Денвера.

Но вот решил обновиться до третьего денвера, а там сии шаблоны перестали работать, ругается так:


Not Found
The requested URL /info.php was not found on this server.

Подсказка Денвера
Вы ошиблись при наборе URL в браузере. Вероятнее всего, сервер пытается найти файл Z:/home/localhost/www/info.php, которого не существует



Вот шаблон который я вставляю:


#<VirtualHost *:*>
# DocumentRootMatch "Z:/var/www/mydomain.com/htdocs"
# ServerName "mydomain.com"
# ServerAlias "mydomain.com" "www.mydomain.com"
# ScriptAlias /cgi/ "Z:/var/www/mydomain.com/cgi/"
# ScriptAlias /cgi-bin/ "Z:/var/www/mydomain.com/cgi-bin/"
# ErrorLog "Z:/var/www/mydomain.com/error.log"
# CustomLog Z:/var/www/mydomain.com/access.log common
#</VirtualHost>

тут Z:/var/www/mydomain.com/htdocs/info.php находится скрипт который я запускаю http://mydomain.com/info.php

в ect/hosts хост добавляется, в E:\php5\usr\local\apache\conf\vhosts.conf он успешно раскручивается
как

# Host Z:/var/www/mydomain.com/htdocs (9):
<VirtualHost *:*>
DocumentRoot "Z:/var/www/mydomain.com/htdocs"
ServerName "mydomain.com"
ServerAlias "mydomain.com" "www.mydomain.com"
ScriptAlias /cgi/ "Z:/var/www/mydomain.com/cgi/"
ScriptAlias /cgi-bin/ "Z:/var/www/mydomain.com/cgi-bin/"
ErrorLog "Z:/var/www/mydomain.com/error.log"
CustomLog Z:/var/www/mydomain.com/access.log common
</VirtualHost>

Помогите разобраться с проблемой.
bæv:
Ветка выделена в отдельную тему «автоматически добавлялос www»,
расположенную в форуме Мусоропровод (07 Ноября 2008, 02:20).

Эта тема на forum.dklab.ru