SVN за Apache с mod_rewrite - PullRequest
       1

SVN за Apache с mod_rewrite

0 голосов
/ 13 сентября 2010

У меня есть следующий virtuslhost для моего хранилища subversion, и я хочу создать ссылку, которая всегда указывает на последний стабильный тег.я попробовал это используя mod_rewrite.он принят apache без каких-либо ошибок, но не будет работать.я также пытался переписать. * который, кажется, не работает (да, я перезапустил apache)

<VirtualHost svn.warsow-race.net>
    ServerAdmin             zolex@warsow-race.net
    ServerName              svn.warsow-race.net

    ErrorLog                /srv/svn/error.log
    CustomLog               /srv/svn/access.log combined

    RewriteEngine On
    RewriteRule ^/racesow0.5/latest-stable(.*) /racesow0.5/tags/0.5.4-stable$1

    <Location />
            DAV svn
            SVNParentPath /srv/svn
    </Location>

    <Location /racesow0.5>
            AuthType Basic
            AuthName "Racesow 0.5"
            AuthUserFile /srv/svn/racesow.passwd
            <LimitExcept GET OPTIONS PROPFIND REPORT>
                    Require valid-user
            </LimitExcept>
    </Location>
</VirtualHost>

журнал переписывания говорит

(2) init rewrite engine with requested uri /racesow0.5/latest-stable/sdk
(3) applying pattern '^/racesow0.5/latest-stable(.*)' to uri '/racesow0.5/latest-stable/sdk'
(2) rewrite '/racesow0.5/latest-stable/sdk' -> '/racesow0.5/tags/0.5.4-stable/sdk'
(2) local path result: /racesow0.5/tags/0.5.4-stable/sdk
(2) prefixed with document_root to /htdocs/racesow0.5/tags/0.5.4-stable/sdk
(1) go-ahead with /htdocs/racesow0.5/tags/0.5.4-stable/sdk [OK]

, но при вызове я получаю 404 не найден

Ответы [ 2 ]

1 голос
/ 13 сентября 2010

Это не будет работать, так как Subversion выполнит свой запрос поверх местоположения, а затем задействует «магический» просмотр журнала доступа, чтобы увидеть, что на самом деле запрашивается:

/racesow0.5/!svn/vcc/[...]
/racesow0.5/!svn/bc/888/[...]

Я не знаю точно, как это работает, но просто «переписать» запрос не получится.

Я бы предложил создать папку "/racesow0.5/latest-stable" и поместить svn: external в эту папку, указывающую на ваш последний выпуск.

1 голос
/ 13 сентября 2010

Документация mod_rewrite (см. «Перезапись по каталогам») указывает на то, что следует избегать помещения директив в раздел <Location>, объявляя его «неподдерживаемым».Мне нужно проверить исходный код, чтобы увидеть, какое влияние это имеет на самом деле, но лучше просто избегать его.

Я бы предложил перенести ваши правила в <VirtualHost>, изатем также PT (сквозная) перезапись, если любому другому модулю необходим правильный доступ к переписанному пути:

<VirtualHost svn.warsow-race.net>
    ...
    ReweiteEngine On
    RewriteRule ^/racesow0.5/latest-stable(.*) /racesow0.5/tags/0.5.4-stable$1 [PT]
    ...
</VirtualHost>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...