LINUX.ORG.RU
ФорумAdmin

[Apache] Недокументированное поведение ScriptAliasMatch

 


0

1

Директива ScriptAliasMatch по идее должна бы просто преобразовывать URL в путь и всё, делая попутно подстановки из группирующих скобок регэкспа. Но тем не менее...

^/hg((/.*)?)$ /var/www/cgi-bin/hg/hgwebdir.cgi$1 
Внезапно! - такого пути, как, например, /var/www/cgi-bin/hg/hgwebdir.cgi/sandbox/myrepo - не существует. Но Apache 2.2 это ничуть не смущает, он передаёт $1 своему CGI-скрипту в качестве позиционного ПАРАМЕТРА командной строки.
Внимание вопрос: что это ещё за недокументированные возможности Apache'а и почему официальный Меркуриал считает возможным ими пользоваться, да ещё и другим рекомендовать??? (см. офдоки по HG+Apache).

★★★★★

Тебе нужен mod_rewrite, а не mod_alias. ScriptAlias указывают путь до cgi скриптов, а не преобразовывают URL в GET запрос.

xpahos ★★★★★
()
Ответ на: комментарий от xpahos

Не-не-не, Дэвид Блейн, тут-то суть вы не и уловили: дело не в том, что делаю я и чего хочу (тем паче, конфигурация не моя изначально-то), а в том, _что_ делает Апач. Присмотритесь сами к примеру: этот пример реально работает, работает каждый день, если бы он не работал, меня бы уже давно Java-девелоперы скушали на завтрак. Вопрос только в том, КАК он работает - ведь судя по документации, это должен быть с точки зрения Апача полный бред, преобразуемый в пути вида: /var/www/cgi-bin/hg/hgwebdir.cgi/sandbox/myrepo

DRVTiny ★★★★★
() автор топика
Ответ на: комментарий от thesis

Here we go:

ScriptAliasMatch        ^/hg((/.*)?)$        /var/www/cgi-bin/hg/hgwebdir.cgi$1
<Directory /var/www/cgi-bin/hg>
  Options ExecCGI FollowSymLinks
  AllowOverride None
  AuthType basic
  AuthName "VCS"
  AuthUserFile /s01/hg/.htpasswd
  Require valid-user
  RewriteEngine On
  RewriteCond %{SERVER_PORT} !^443$
  RewriteRule ^.*$ https://%{SERVER_NAME}%{REQUEST_URI} [L,R]
</Directory>

ScriptAliasMatch        ^/hg2((/.*)?)$        /var/www/cgi-bin/hg2/hgwebdir.cgi$1
<Directory /var/www/cgi-bin/hg2>
  Options ExecCGI FollowSymLinks
  AllowOverride None
  AuthType basic
  AuthName "VCS"
  AuthUserFile /s01/hg/.htpasswd
  Require valid-user
  RewriteEngine On
  RewriteCond %{SERVER_PORT} !^443$
  RewriteRule ^.*$ https://%{SERVER_NAME}%{REQUEST_URI} [L,R]
</Directory>

DRVTiny ★★★★★
() автор топика
Ответ на: комментарий от thesis

То есть это не vhost, просто url мапится

DRVTiny ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.