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

时间:2012-07-06 06:55:41

标签: apache .htaccess mod-rewrite url-rewriting apache2

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

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

我有两个.htaccess RewriteRule行:

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 我如何使它工作?

1 个答案:

答案 0 :(得分:1)

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

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