我有以下的RewriteRule。 这将重写所有以mac , linux或windows开头的内容:
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]