首页 文章

nginx iphone重写角度应用程序 - 刷新时获得404

提问于
浏览
0

我们在移动客户端的nginx上托管了一个角度应用程序 . 所有路由都由角度代码处理 . 因此没有子目录等 . 因此路径作为参数传递给角度文件,即“index_angular.html”,angular负责其余部分 . 坐着工作并通过菜单项导航工作 . 但是一旦我进入菜单项然后刷新页面,它就会返回404错误 . 这是nginx conf:

server {
listen 80;
root /apps/angular;
server_name angular.com;

location / {
add_header 'Access-Control-Allow-Origin' 'http://angular.com';
add_header 'Access-Control-Allow-Credentials' 'true';
add_header 'Access-Control-Allow-Methods' 'GET,POST,OPTIONS';
index  index.php;

if ($http_user_agent ~* '(iPhone|iPod|android|blackberry)') {

        rewrite ^/$ /index_angular.html last;

        }

}


location /menuitem1/ {
rewrite ^/(.*)$ /index_angular.html last;
}

我需要能够刷新页面并将所有路径参数发送到index_angular.html文件,该文件应该处理路由 . 请帮助 .

1 回答

  • 1

    您需要在404上的位置配置以返回index_angular.html

    location /menuitem1/ {
        try_files $uri $uri/ /index_angular.html =404;
    }
    

    这应该有用,请告诉我 .

    这是我的一个工作例子,我在你的情况下做错了:

    server {
        listen 80 default_server;
    
        server_name myProject.lab;
    
        root /var/www/myProject;
    
        location / {
            try_files $uri $uri/ /index.html =404;
        }
    
    }
    

    更新

    我签了nginx documentation,我猜是在错误页面的情况下定义一个重定向:

    location /old/path.html {
        error_page 404 =301 http:/example.com/new/path.html;
    }
    

    但我总是使用我的第一个建议,并且运作良好:)

相关问题