Redirect 针对单个/少数URL的nginx重定向

Redirect 针对单个/少数URL的nginx重定向,redirect,nginx,return,rewrite,listen,Redirect,Nginx,Return,Rewrite,Listen,我继承了一个在nginx上运行的站点。许多页面(几十个)需要离开并被重定向,但大部分(数百个)页面不需要重定向。“允许正常返回除此列表中的页面以外的所有页面”的正确语法是什么?我能得到的最接近的代码是http指令中的以下代码: # nginx configuration server { listen someurl.org:80; location /about/strategic-plan { return 301 http://www.anothersite.

我继承了一个在nginx上运行的站点。许多页面(几十个)需要离开并被重定向,但大部分(数百个)页面不需要重定向。“允许正常返回除此列表中的页面以外的所有页面”的正确语法是什么?我能得到的最接近的代码是http指令中的以下代码:

# nginx configuration
server {    
    listen someurl.org:80;
    location /about/strategic-plan {
   return 301 http://www.anothersite.com;
}   
}    
该代码段正确地将页面/about/strategic plan重定向到,但所有其他页面请求都会生成404。如果我使用rewrite指令而不是return指令,这也是正确的

如果我删除listen指令,所有页面都会正常工作,但是/about/strategic plan不会发生重定向

我的第一个问题:如何让nginx监听域而不必为站点中的每个页面指定位置

第二:我如何在不破坏整个网站的情况下让单个页面重定向


我一定错过了一些基本的东西。非常感谢您的帮助。

我在您的服务器中没有看到
root
指令。同时添加默认的
位置

server {       
    listen someurl.org:80;

    root /path/to/htmls;

    location / {
        # serve static files
    }

    location /about/strategic-plan {
        return 301 http://www.anothersite.com;
    }      
}

它是完整的nginx配置吗?我发布的只是nginx配置的一部分。完整配置文件可在上查看。注意,我清理了公开显示的URL,这很有帮助。我注意到当我设置服务器名称时,它告诉我它被覆盖了。我花了一段时间才发现有一个include覆盖了我正在做的事情,它包含了server_name和所有必要的指令,包括root等等。一旦我得到了这些,重定向就非常有效。另外,作为参考,这是nginx配置文件的一个很好的介绍。谢谢你的帮助。