重写规则只影响第一段

我有以下的RewriteRule。 这将重写所有以maclinuxwindows开头的内容:

 RewriteCond $1 ^(mac|linux|windows) [NC] RewriteRule ^(.*)$ /index.php/site/index/$1 [L] 

不幸的是,这也重写/mac/test/testing 。 如果/mac之后有另一个segmend,我怎么能阻止它的应用?

所以我find了解决办法:

 RewriteCond $1 ^(linux|mac|windows)($|\/)$ [NC] RewriteRule ^(.*)$ /index.php/site/index/$1 [L] RewriteCond $1 ^(linux|mac|windows)/category/(.*)$ [NC] RewriteRule ^(.*)$ /index.php/site/category/$1 [L] RewriteCond $1 ^(app|download)/(.*)$ [NC] RewriteRule ^(.*)$ /index.php/site/$1 [L] 

注意第一行结尾的$符号。 我不知道如果($|\/)是使斜线可选的正确方法,但它的工作原理。 有什么build议?

编辑:实际上有一个更简单的方法来处理尾部的斜线。

 RewriteCond $1 ^(linux|mac|windows)/?$ [NC] RewriteRule ^(.*)$ /index.php/site/index/$1 [L]