0

次の書き換え規則を持つ

RewriteEngine On
RewriteCond %{REQUEST_URI} !/(js|css|images)/

RewriteRule section/([0-9a-zA-Z_-]+)$ /index.php?controller=section&method=index&param=$1
RewriteRule category/([0-9a-zA-Z_-]+)$ /index.php?controller=category&method=products&param=$1
RewriteRule ([0-9a-zA-Z_-]+)/([0-9a-zA-Z_-]+)/(.*)$ /index.php?controller=$1&method=$2&param=$3
RewriteRule ([0-9a-zA-Z_-]+)/([0-9a-zA-Z_-]+)$ /index.php?controller=$1&method=$2

これで、/js/jquery.js を呼び出すと、ファイルが正常に取得されます。ただし、ファイルが 1 つ深いフォルダー レベルにある場合、たとえば、. /js/fancybox/jquery.fancybox-1.3.4.pack.js、そうではありません。これらの2行を削除するとすべてが正常に機能するため、セクションとカテゴリのルールに関係があります

4

1 に答える 1

1

ルールごとに条件を繰り返す必要があります。条件は直後のルールにのみ適用されます。2 つのセクションとカテゴリのルールを削除すると機能する理由は、条件が 3 番目のルールに適用されているためです (これが混乱の原因です)。ルールごとに条件を繰り返す必要があります。

RewriteEngine On

RewriteCond %{REQUEST_URI} !/(js|css|images)/
RewriteRule section/([0-9a-zA-Z_-]+)$ /index.php?controller=section&method=index&param=$1

RewriteCond %{REQUEST_URI} !/(js|css|images)/
RewriteRule category/([0-9a-zA-Z_-]+)$ /index.php?controller=category&method=products&param=$1

RewriteCond %{REQUEST_URI} !/(js|css|images)/
RewriteRule ([0-9a-zA-Z_-]+)/([0-9a-zA-Z_-]+)/(.*)$ /index.php?controller=$1&method=$2&param=$3

RewriteCond %{REQUEST_URI} !/(js|css|images)/
RewriteRule ([0-9a-zA-Z_-]+)/([0-9a-zA-Z_-]+)$ /index.php?controller=$1&method=$2
于 2012-08-29T12:06:15.123 に答える