为什么htaccess RewriteRule ^ foo $也匹配^ foobar $

我想要这些URLredirect/转发:

here.com/foo ==> there.com/a/b here.com/foobar ==> there.com/c/d 

我有这两个.htaccess重写规则行:

 RewriteRule ^foo$ http://there.com/a/b [R=301,L] RewriteRule ^foobar$ http://there.com/c/d [R=301,L] 

但结果是:

 here.com/foo ==> there.com/a/b here.com/foobar ==> there.com/a/b 

foo也匹配foobar我如何使它工作?

这是一个浏览器缓存问题。 我最初的规则是错误的。 我将规则更改为上面列出的规则,但由于我使用的是HTTP状态代码301(永久移动),因此浏览器将其缓存起来,而没有从服务器获取新的请求。 我尝试了Chrome浏览器隐身窗口,发现了这个问题。

请注意,将HTTP状态代码设置为303(请参阅其他)会导致浏览器不缓存它。