Apache RewriteRule将图像,css和js文件视为正常

我需要build立一个Apache的RewriteRule为了有这样的行为:

example.com/foo => index.php?module=foo&action=&args= example.com/foo/bar => index.php?module=foo&action=bar&args= example.com/foo/bar/baz => index.php?module=foo&action=bar&args=baz example.com/foo/bar/baz/foobaz => index.php?module=foo&action=bar&args=baz/foobaz 

我写了这个正则expression式:

 RewriteRule ^(.[^/]*)(\/)?(.[^/]+)?(\/)?(.+)?$ index.php?module=$1&action=$3&args=$5 [L,QSA] 

它工作的很好,我只需要告诉Apache忽略所有以特定扩展名(例如.jpg,.png,.css,.js,.gif等)结尾的url。 这些应该被视为正常,例如example.com/css/style.css应显示CSS文件(是否存在)。

任何想法?

一个简单的方法来解决这个问题

 RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^(.[^/]*)(\/)?(.[^/]+)?(\/)?(.+)?$ index.php?module=$1&action=$3&args=$5 [L,QSA] 

这告诉Apache不运行该规则,如果该文件是一个真正的文件在系统上可以提供服务了..现在,如果你想这样做只是图像/ CSS / JS文件,你可能做

 RewriteCond %{REQUEST_FILENAME} !^(.*).(js|jpg|css|gif)$ RewriteRule ^(.[^/]*)(\/)?(.[^/]+)?(\/)?(.+)?$ index.php?module=$1&action=$3&args=$5 [L,QSA] 

那个没有经过testing,但是你明白了。