重写类别和产品页面的规则

时间:2010-11-14 08:25:25

标签: regex apache .htaccess mod-rewrite

我想在我的网站上使用静态网址,因此当用户访问

http://www.domain.com/toys/ - 他会看到玩具类别页面

当他去

http://www.domain.com/toys/playing-cards - 他会看到产品页面

我在使用以下重写规则时遇到了一些麻烦:

RewriteRule ^item/(toys|clothes)/(.*)/?$ showPRODUCT.php?id=$2 [NC,L]
RewriteRule ^item/(toys|clothes)/?$ showCATEGORY.php?product=$1 [NC,L]

因为除了产品之外,第一条规则“捕获”了类别网址(http://www.domain.com/toys/)(反之亦然,如果我切换订单)。

有什么想法吗?

谢谢!

大卫

1 个答案:

答案 0 :(得分:1)

RewriteRule ^item/(toys|clothes)/(.*)/?$ showPRODUCT.php?id=$2 [NC,L]
RewriteRule ^item/(toys|clothes)/?$ showCATEGORY.php?product=$1 [NC,L]

假设开头的“^项”应该在那里......

您需要将*转发器更改为+转发器,这样就不会与类别匹配。同样,如果L标志找到第一个,则L标志应该阻止它继续使用另一个重写:

RewriteRule ^item/(toys|clothes)/(.+)/?$ showPRODUCT.php?id=$2 [NC,L]
RewriteRule ^item/(toys|clothes)/?$ showCATEGORY.php?product=$1 [NC,L]