LocationMatch и DAV svn - PullRequest
       56

LocationMatch и DAV svn

2 голосов
/ 20 марта 2009

Я пытаюсь сделать наш репозиторий Subversion доступным через несколько URL-адресов. Для этого я подумал использовать директиву LocationMatch. Моя конфигурация:

<Location ~ "/(svn|repository)">
  DAV svn
  SVNPath /opt/svn
  AuthzSVNAccessFile /etc/subversion/access
</Location>

Вышеуказанная конфигурация НЕ работает ... Странно то, что если я использую, например, эту конфигурацию, она хорошо работает для обоих URL:

<Location ~ "/(svn|repository)">
  SetHandler server-status
</Location>

Для меня похоже, что комбинация DAV svn и LocationMatch на самом деле не работает ... или я здесь что-то не так делаю?

Ответы [ 4 ]

1 голос
/ 01 марта 2011

У меня тоже проблемы с тем, что я хотел использовать регулярные выражения, чтобы избежать попадания других подпутей в мой матч

например.

<LocationMatch "^/test/.*$>

не совпадает с

<Location "/test">

как и в последнем, http://site.com/newproduct/test будет пойман последним, но не первым. Так будет http://site.com/test/scripts. Вот почему LocationMatch существует, но он терпит неудачу всякий раз, когда я добавляю регулярные выражения. Похоже, работает, если я использую LocationMatch без каких-либо регулярных выражений, хотя.

0 голосов
/ 20 июня 2013

быстрое решение, которое работает: просто добавьте ссылку на каждый vhost, вы хотите сделать svn repro доступным.

0 голосов
/ 02 ноября 2011

Кажется, проблема в том, что когда вы используете регулярные выражения в разделе Location или LocationMatch, сервер Apache перезаписывает некоторые метаданные в запросе содержимым регулярного выражения (возможно, чтобы обработчик, который принимает этот запрос, что он был нацелен на регулярное выражение).

Когда обработчик dav_svn получает запрос, он обращается к этим метаданным, чтобы определить путь, необходимый для получения запрашиваемого ресурса. Поскольку регулярное выражение не является реальным путем, вы получаете такие ошибки:

svn: PROPFIND of '%5E/(svn%7Crepository)/!svn/vcc/default': Could not parse response status line

У меня нет никакого исправления для этого, за исключением того, что я не использую регулярные выражения с dav_svn: в моем случае я хотел использовать форматировщик XSLT, чтобы показать хороший интерфейс для хранилища subversion при доступе к нему через веб-браузер, Доступ к ресурсам XSL должен был осуществляться по другому пути на том же имени хоста, на котором размещено хранилище Subversion, поэтому я хотел использовать регулярное выражение Location, чтобы путь к ресурсам XSL не попадал в обработчик dav_svn. Это был перебор, поэтому вместо этого я просто развернул websvn на другом имени хоста, и это было так.

0 голосов
/ 04 мая 2010

Получает ли клиент ошибку, и есть ли ошибка в журналах ошибок HTTP?

SVN может запутаться, если вы сопоставите несколько локаций с одним репо SVN. См. http://subversion.apache.org/faq.html#http-301-error. Я сейчас решаю эту проблему из-за другой проблемы.

Это работает, если вы удалите регулярное выражение? Я приму да, но я хотел проверить.

<Location "/svn">
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...