1

私はapache設定ファイルを持っています、

<VirtualHost *:443 >

    SSLEngine on
    SSLCertificateFile ...
    SSLCertificateKeyFile ...
    SSLCertificateChainFile ...
    SSLCACertificateFile ...


    ServerName www.etebaran.com
    ServerAlias www.etebaran.com etebaran.com 
    ServerAdmin webmaster@etebaran.com
    DocumentRoot /home/etebaran/domains/etebaran.com/private_html
    ScriptAlias /cgi-bin/ /home/etebaran/domains/etebaran.com/public_html/cgi-bin/

    UseCanonicalName OFF

    SuexecUserGroup etebaran etebaran
    CustomLog /var/log/httpd/domains/etebaran.com.bytes bytes
    CustomLog /var/log/httpd/domains/etebaran.com.log combined
    ErrorLog /var/log/httpd/domains/etebaran.com.error.log
    ErrorDocument 400 default
    ErrorDocument 401 default
    ErrorDocument 403 default
    ErrorDocument 404 default
    ErrorDocument 405 default
    ErrorDocument 408 default
    ErrorDocument 410 default
    ErrorDocument 411 default
    ErrorDocument 412 default
    ErrorDocument 413 default
    ErrorDocument 414 default
    ErrorDocument 415 default
    ErrorDocument 500 default
    ErrorDocument 501 default
    ErrorDocument 502 default
    ErrorDocument 503 default

<Location /svn>
    #Options -All
    DAV svn
    SVNPath /home/etebaran/svn/

    AuthzSVNAccessFile /home/etebaran/svn/conf/authz
    Satisfy Any
    Require valid-user
    AuthType Basic
    AuthName "Etebaran Repository"
    AuthUserFile /home/etebaran/svn/conf/.htpasswd
    SVNAutoversioning on 
</Location>
<Location /trac>
    SetHandler mod_python
    PythonHandler trac.web.modpython_frontend
    PythonOption TracEnv /home/etebaran/trac
    PythonOption TracUriRoot /trac
    Satisfy Any
</Location>
<LocationMatch "/trac/login">
    AuthType Basic
    AuthName "Etebaran Trac"
    AuthUserFile /home/etebaran/svn/conf/.htpasswd
    Require valid-user
</LocationMatch>
    <Directory /home/etebaran/domains/etebaran.com/private_html>
        Options +Includes -Indexes
        RewriteEngine On
        RewriteCond %{query_string} ^(.*)
        RewriteRule (.*) etebaran/_japp/controller.php?__r=$1&%1 [L]
        suPHP_Engine ON
        suPHP_UserGroup etebaran etebaran
    </Directory>
</VirtualHost>

問題は、<Directory>が優先される<Location>ため、ディレクトリの書き換えルールが場所を上書きすることです。

奇妙なことに、etebaran.com / svnは引き続き機能しますが、etebaran.com / tracは、ディレクトリディレクティブとそこにあるPHPフレームワークによって処理されます。

厄介な回避策があることは知っていますが、最も適切な回避策は何ですか?

4

1 に答える 1

1

問題はあなたのRewriteCondラインにあるようです。一致パターンはです^(.*)。これは基本的にすべてに一致ます。より詳細な一致パターンを使用して、他のツールのURLと一致しないようにします。たとえば、のパターンは!^/svn/.*、「」で始まらないすべてのURLと一致する必要があります/svn/

SubversionとTracのインストールでは、それぞれ/svn/「」と「」で始まるURLを使用しているようです/trac/。PHPフレームワークのURLはどのようになっていますか?それらもプレフィックスで始まりますか、それともサイトのルートから提供されますか?

于 2012-05-15T18:04:22.373 に答える