0

私のhtaccessファイルには次のものがあります:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(mailinglist)/.*$ - [L]
RewriteRule ^(.*)$ index.php?url=$1 [QSA,L]
</IfModule>

メーリングリストディレクトリにいる場合、基本的に、htaccessが最後の行にヒットしないようにしたいと考えています。

これは、/mailinglist ディレクトリのルートにあるアイテムに対してのみ機能します。/mailinglist/w/1 のように深く掘り下げると、最後の書き換えルールに違反してヒットします。/mailinglist ディレクトリにいる場合、最後の書き換えルールの処理を停止するにはどうすればよいですか。

その理由は、そのディレクトリに別の htaccess のセットがあり、この htaccess でそれを制御したくないからです。

4

2 に答える 2

0

試す:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !^(mailinglist)/.*$
RewriteRule ^(.*)$ index.php?url=$1 [QSA,L]
</IfModule>

チェックをmailinglistRewriteCond に切り替えました。URI が で始まらない場合、条件は index.php にのみ書き換えられますmailinglist

于 2012-09-12T22:24:50.063 に答える
0

条件が間違ったルールに適用されています。ルールを交換する必要があります:

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteRule ^(mailinglist)/.*$ - [L]
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^(.*)$ index.php?url=$1 [QSA,L]
</IfModule>

条件は直後のルールにのみ適用されるため、2!-f!-d条件がパススルーに誤って適用されますが、index.phpルールにはそれらの条件がありません。

于 2012-09-12T22:25:04.190 に答える