Apache 为什么htaccess重写规则^foo$也与^foobar匹配$

Apache 为什么htaccess重写规则^foo$也与^foobar匹配$,apache,.htaccess,mod-rewrite,url-rewriting,apache2,Apache,.htaccess,Mod Rewrite,Url Rewriting,Apache2,我想要这些URL重定向/转发: 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.

我想要这些URL重定向/转发:

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(请参阅其他)会导致浏览器不缓存它。

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


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

一定存在其他错误。给定的
重写规则对我有效。一定有其他错误。给定的
RewriteRules
对我很有用。有关更多建议,请参阅本文:哇,这篇文章中有很多优秀的调试技巧。htaccess RewriteRules。谢谢TerryE!查看这篇文章以获得更多建议:哇,有很多非常好的调试技巧。谢谢TerryE!