Apache 重写规则,不包括条件

Apache 重写规则,不包括条件,apache,mod-rewrite,Apache,Mod Rewrite,有以下重写规则 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

有以下重写规则

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时,我得到了这个文件。但是,如果文件是更深一层的文件夹,例如/js/fancybox/jquery.fancybox-1.3.4.pack.js,则不会。它与部分和类别规则有关,因为当我删除这两行时,一切都正常运行

您需要为每个规则重复该条件,该条件仅适用于紧随其后的规则。当您删除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