问题:Nginx 使用 /#/url 重定向到 url

我是使用 nginx 的新手,我正在尝试将一个 url 重定向到另一个。

https://server.com/#/page.html -> https://server.com/page.html

/#/来自使用 Angular2 的路由器功能。我决定将页面更改为静态 html,因为 Angular2 会在启动时加载整个应用程序,并且没有必要这样呈现单个信息页面。

我解决问题的尝试如下。我可以从/anotherpage -> /page.html重定向,但/#/anotherpage -> /page.html加载 Angular2 应用程序并尝试路由到不存在的路由。

使用此配置和位置指令:

server {
   listen      8001;
    server_name server.com;
    ...
    #SSL Things
    ...
    root /to/root/folder/public;
    #Redirects:
    location = /anotherpage {
        rewrite ^/.* https://$server_name/page.html;
    }
    #Does not redirect:
    location = /#/anotherpage {
        rewrite ^/.* https://$server_name/page.html;
    }
}

也欢迎任何关于最佳实践的建议。

解答

遇到#后浏览器不会发送任何信息。

因此,当发送https://server.com/#/page.html时,nginx 只能看到https://server.com/

因此重定向是不可能的,改变客户端应用程序是唯一的选择。

Logo

开发云社区提供前沿行业资讯和优质的学习知识,同时提供优质稳定、价格优惠的云主机、数据库、网络、云储存等云服务产品

更多推荐