【问题标题】:nginx redirect for a single/few urlsnginx重定向单个/几个url
【发布时间】:2014-03-12 22:17:11
【问题描述】:

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

# nginx configuration
server {    
    listen someurl.org:80;
    location /about/strategic-plan {
   return 301 http://www.anothersite.com;
}   
}    

sn-p 正确地将页面 /about/strategic-plan 重定向到 http://www.anothersite.com,但所有其他页面请求都会生成 404。如果我使用 rewrite 指令而不是 return 指令,这也是正确的。

如果我删除了监听指令,所有页面都可以正常工作,但 /about/strategic-plan 不会发生重定向。

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

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

我必须在这里遗漏一些基本的东西。任何帮助表示赞赏。

【问题讨论】:

  • nginx配置完成了吗?
  • 我发布的只是 nginx 配置的一部分。 完整的配置文件可以在pastebin.com/jQfeRa9Z>查看。请注意,我清理了公开显示的网址。

标签: redirect nginx return rewrite listen


【解决方案1】:

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

server {       
    listen someurl.org:80;

    root /path/to/htmls;

    location / {
        # serve static files
    }

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

【讨论】:

  • 这很有帮助。我注意到当我设置 server_name 时,它​​告诉我它被覆盖了。我花了一段时间才发现有一个包含覆盖了我正在做的事情,并包含了 server_name 和所有必要的指令,包括 root 等。一旦我明白了,放入重定向效果很好。此外,作为参考,这是对 nginx 配置文件的一个很好的介绍。 tinyurl.com/accfy76。感谢您的帮助。
猜你喜欢
  • 2013-08-04
  • 1970-01-01
  • 2017-09-06
  • 2017-08-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-12-13
  • 1970-01-01
相关资源
最近更新 更多