我已制定以下 RewriteRule。这将重写以mac
、linux
或开头的所有内容windows
:
RewriteCond $1 ^(mac|linux|windows) [NC]
RewriteRule ^(.*)$ /index.php/site/index/$1 [L]
不幸的是,这也会重写/mac/test/testing
。如果后面还有另一个段,我该如何阻止它应用/mac
?
答案1
所以我找到了解决方案:
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]
注意$
第一行末尾的符号。我不确定是否($|\/)
是使尾部斜杠可选的正确方法,但它有效。有什么建议吗?
编辑:实际上有一种更简单的方法来处理尾随斜杠。
RewriteCond $1 ^(linux|mac|windows)/?$ [NC]
RewriteRule ^(.*)$ /index.php/site/index/$1 [L]