3

書き直しの手助けが必要です。

適用する必要がある 2 つのルールがあります。 1. RewriteCond を HTTP_USER_AGENT に基づいて作成します。 2. LocationMatch と一致するように URL にパスを追加します。

私が今持っているものは壊れています:

RewriteCond %{HTTP_USER_AGENT} ^git
RewriteRule ^(.*)$ /git/$1 [L]

RewriteRule を削除してすぐにパスを照会すると問題なく動作しますが、このルールを使用して実行すると、Apache が「ファイルを見つけることができません」と表示されます。

一致は LocationMatch <LocationMatch "/git/">であるため、 RewriteRule がそれを指すことができるかどうかわかりませんか?

完全な構成:

<VirtualHost *:80>
DocumentRoot /home/subgit/repos

    <Directory /home/subgit/repos>
        Options       None
        AllowOverride none
        Order         allow,deny
        Allow         from all
    </Directory>

CustomLog /home/subgit/logs/access_log combined
SuexecUserGroup subgit subgit

RewriteEngine On
RewriteCond %{HTTP_USER_AGENT} ^git
RewriteRule ^(.*)$ /git/$1 [L]

RewriteCond %{QUERY_STRING} service=git-receive-pack [OR,NC]
RewriteCond %{REQUEST_URI} ^/git/.*/git-receive-pack$ [NC]
RewriteRule .* - [E=AUTHREQUIRED:yes]

ScriptAlias /git/ /home/subgit/bin/gitolite-suexec-wrapper.sh/

 <LocationMatch "/git/">
    Order Allow,Deny
    Deny from env=AUTHREQUIRED
    Allow from all
    Satisfy Any
    AuthType Basic
    AuthName "subgit"
    AuthBasicProvider file
    AuthUserFile /home/subgit/etc/subgit
    Require valid-user
  </LocationMatch>
</VirtualHost>

ありがとう

4

1 に答える 1

4

解決策は、[L] ではなく [PT] を使用することでした。

于 2013-02-28T15:10:06.283 に答える