RewriteRule 仅影响第一段

RewriteRule 仅影响第一段

我已制定以下 RewriteRule。这将重写以maclinux或开头的所有内容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]

相关内容