我有一个本地文件夹/bar
,我希望能够通过 访问http://www.example.com/foo
。
所以我有这样的配置
rewrite ^/foo/(.*)$ /bar/$1 last;
与此同时,我想堵塞公开访问真实网址/bar
,
然后我添加如下配置
location ~* ^/bar{ return 404; }
但是当我将此 url 添加到配置中时,上面的第一个配置不起作用,现在都返回404
为了让重写工作正常,我应该修复什么?
谢谢。
答案1
将“旧”位置标记为internal
:
location /bar {
internal;
# your /bar location directives
}
Nginx 仅当由于error_page
、rewrite
或X-Accel-Redirect
SSI 请求而发生“内部”位置时才处理它们(请参阅文档),否则会回复 404。