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

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

我有一个本地文件夹/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_pagerewriteX-Accel-RedirectSSI 请求而发生“内部”位置时才处理它们(请参阅文档),否则会回复 404。

相关内容