(Apache win32) Overlapping aliases

Eugg1e
Дата: 22.09.2006 18:04:22
Здравствуйте.


Поставил программу. У программы есть портал. Хочу настроить его пока локально, на своей машине, под apache 2.2.3 win32. В руководстве по инсталляции этого портала пишут, что нужно добавить следующие куски текста в соответствующие секции httpd.conf:

Alias /portal "<installation path>/webroot"
<Directory "<installation path>/webroot">
Options None
AllowOverride None
Order allow,deny
Allow from all
</Directory>

Alias /portal/help "<installation path>/documentation"
<Directory "<installation path>/documentation">
Options None
AllowOverride None
Order allow,deny
Allow from all
</Directory>

ScriptAlias /portal/cgi-bin "<installation path>/cgi-bin"
<Directory "<installation path>/cgi-bin">
AllowOverride None
Options None
</Directory>

Добавляю в httpd.conf (installation path заменяю на "C:/Program files/app" разумеется), стартую Apache. В Error.log пишет

[warn] The ScriptAlias directive in
C:/Program Files/Apache Software Foundation/Apache2.2/conf/httpd.conf
at line 306 will probably never match because it overlaps an earlier Alias.
И далее, когда добирается до вызова CGI, пишет
[error] [client xx.xxx.xxx.xxx] File does not exist: <installation_path>/webroot/cgi-bin

На самом деле, в файле index.html, который сначала открывается, стоит метатег, говорящий браузере перегрузиться и указан url=cgi-bin/sc.cgi?param1... который уже и должен формировать интерфейс.

То есть, насколько я понимаю, apache алиас /portal заменяет на соотвтетствующий путь и далее добавляется этот url, хотя, подразумевается, что веб-сервер, увидев строчку /portal/cgi-bin/, будет использовать соотвествующую ScriptAlias директорию, но этого не происходит и веб-сервер пытается обратиться к несуществующему каталогу (папка cgi-bin на самом деле находится на одном уровне с webroot).

Между делом, пробовал с MS IIS - всё работает.
Подозреваю, что нужно прописать какую-то закорючку в конфигурационном файле apache, но какую - не знаю.

Друзья, если знаете, в чём причина проблемы, напишите, пожалуйста.
Спасибо за отзывчивость.
Anjey aka PM
Дата: 22.09.2006 20:49:52
Alias /portal "<installation path>/webroot"
<Directory "<installation path>/webroot">
Options None
AllowOverride None
Order allow,deny
Allow from all
</Directory>

перенеси в конец конфигурации, должно помочь
Eugg1e
Дата: 25.09.2006 12:05:51
Да-да, перенос невложенного алиаса в конец помог избавиться от ошибки, связанной с перекрывающимися алиасами, но проблема сервера с пониманием неделимых вложенных алиасов сохранилась. То есть, насколько я понимаю, происходит следующее:

Apache получает запрос - адрес, в котором присутствует alias /portal и передаёт браузеру содержимое файла index.html, который находится в каталоге <installation path>/webroot. Пока всё корректно.

Браузер отображает эту страницу, "видит" в ней директиву загрузить то, что написано в параметре url. То есть, cgi-bin/sc.cgi?param1=...

И здесь происходит "клин". Апач, наверное, просто к текущему каталогу прибавляет этот cgi-bin/sc.cgi?param1=... , ничего, понятное дело, там не находит и выдаёт ошибку.

Скажите, правильно ли я понимаю процесс и как можно заставить апач правильно интерпретировать происходящее?
Kachalov
Дата: 25.09.2006 15:09:49
Eugg1e
url=cgi-bin/sc.cgi?

- попробуй заменить на
url=/cgi-bin/sc.cgi?
Kachalov
Дата: 25.09.2006 15:12:01
Да и вот это:
Eugg1e

ScriptAlias /portal/cgi-bin "<installation path>/cgi-bin"

попробуй заменить на
ScriptAlias /portal/cgi-bin "<installation path>/cgi-bin/"