0

私はこのような .htaccess を持っています

RewriteEngine On
RewriteCond %{REQUEST_URI} !static/(.*)\.
RewriteRule ^(.*)$ index.php?controller=$1 [QSA]

それは正常に動作します。/static フォルダーの要求はそのまま残りますが、他のユーザーは index.php ファイルを実行します。しかし、ここで別のルールを追加する必要があります。ユーザーが /action/something に移動すると、/actions/something.php が実行されます。しかし、次の行を追加すると

RewriteRule ^action/(.*)$ actions/$1.php [QSA]

静的フォルダーへの要求を中断します。

4

1 に答える 1

1

staticの直後に新しいルールを書かない限り、なぜそれが壊れるべきなのかという理由はありませんRewriteCond。ただし、絶対URLに書き換える必要があります

RewriteEngine On
RewriteCond %{REQUEST_URI} !static/(.*)\.
RewriteRule ^(.*)$ /index.php?controller=$1 [QSA]
RewriteRule ^action/(.*)$ /actions/$1.php

RewriteCond異常に見えます。ドットなしで静的ページを書き換える理由がない限り、を単にに.減らす必要がありますRewriteCond

RewriteCond %{REQUEST_URI} !static/

更新

無限書き換えを防ぐには、別の除外条件を追加する必要があります

RewriteCond %{REQUEST_URI} !^/index\.php$

また、action除外する必要があります

RewriteCond %{REQUEST_URI} !/actions?/

すべてをまとめると

RewriteEngine On
RewriteCond %{REQUEST_URI} !/static/
RewriteCond %{REQUEST_URI} !/actions?/
RewriteCond %{REQUEST_URI} !^/index\.php$
RewriteRule ^(.*)$ /index.php?controller=$1 [QSA]
RewriteRule ^action/(.*)$ /actions/$1.php
于 2013-03-27T22:37:01.177 に答える