重写新的URL并阻止nginx中的旧URL

我有一个本地文件夹/bar ,我想通过http://www.example.com/foo

所以我有这样的configuration

 rewrite ^/foo/(.*)$ /bar/$1 last; 

同时,我想阻止公众访问真正的url /bar

然后我像添加configuration

 location ~* ^/bar{ return 404; } 

但是当我把这个URL添加到configuration中,上面的第一个configuration不起作用,现在都返回404

任何我应该修复,以使重写工作?

谢谢。

将“旧”位置标记为internal

 location /bar { internal; # your /bar location directives } 

Nginx只在发生error_pagerewriteX-Accel-Redirect或SSI请求时才处理“内部”位置(请参阅文档中的完整列表),否则它会回复404。