2012-05-05 5 views
0

以上 優先、 のapacheのmod_rewrite私はApacheの設定ファイルを持っているのsvnとtracの

<VirtualHost *:443 > 

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


    ServerName www.etebaran.com 
    ServerAlias www.etebaran.com etebaran.com 
    ServerAdmin [email protected] 
    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フレームワークによって処理されます。

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

答えて

1

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

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

+0

vveryエレガントではなく動作しています – AbiusX

関連する問題