我有两个网址在做一些查询,我正在努力以我想要的方式重写。
第一
/shop/index.php?category=catslug
我想成为
/shop/category
第二
/shop/index.php?product=slug
到
/shop/category/product
我目前有这个:
RewriteRule ^shop/([A-Za-z0-9-]+)/?$ shop/index.php?category=$1 [L]
RewriteRule ^shop/[A-Za-z-]+/([A-Za-z0-9-]+)/?$ shop/index.php?product=$1 [NC,L]
问题在于其中一条规则破坏了以商店开头的任何内容,因此shop/cart
之类的内容无效。我很困惑。这可能吗?
答案 0 :(得分:0)
请注意,对于shop/cart
,cart
部分与第一个[A-Za-z0-9-]+
的{{1}}部分匹配。所以它被重写为RewriteRule
。
避免这种情况的方法,希望你的固定网址数量相对较少,就是在你的2条规则之前有一个shop/index.php?category=cart
RewriteRule
对于匹配其中一个竖线分隔字符串(例如RewriteRule ^shop/(cart|this|that|other|thing) - [L]
RewriteRule ^shop/([A-Za-z0-9-]+)/?$ shop/index.php?category=$1 [L]
RewriteRule ^shop/[A-Za-z-]+/([A-Za-z0-9-]+)/?$ shop/index.php?product=$1 [NC,L]
)的请求,cart
表示不会更改请求,而-
表示最后一次(不是{39}} ; t继续下一个规则)。