除了索引之外的路线上的Emberjs应用程序刷新给出404错误

时间:2014-02-13 10:21:52

标签: javascript apache .htaccess ember.js http-status-code-404

我有一个使用Ember-App-Kit(EAK)提供的入门套件的小型ember应用程序。我在构建生产AWS EC2实例后上传了dist目录。

我现在面临的问题::

  1. 当我点击根网址时,我可以看到索引页面,当从索引页面中存在的链接转到任何其他路径时,它工作正常并让我转到该页面。 当我尝试在该页面上点击刷新时会出现问题。
  2. 首先我认为这是由于权限错误,但它只是单个html文件,并且js和css正在正确加载。 然后想到可能是htaccess问题所以试图插入一个,但之后也没有效果。 应用程序源代码的条带化版本位于Source Code

    .htaccess文件用于重定向::

    RewriteEngine On
    RewriteBase /
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_URI} !index
    RewriteRule ^(.*)$ /index.html [L]
    

3 个答案:

答案 0 :(得分:2)

我实际上无法弄清楚如何使用Apache服务器,所以我安装了nginx,它使用了我在配置文件中提供的重写规则。

server {
        root /var/www/{Your App Directory Path Here};
        index index.html index.htm;
        server_name {Your website URL or IP address here};

        location / {
                try_files $uri $uri/ /index.html?/$request_uri;
        }
}

您可以在此处找到更多讨论:Ember-App-Kit Git Repo Issue 486

答案 1 :(得分:1)

正如this post中提到的那样使用FallbackRessource是完成此任务的最简单方法:

FallbackResource /index.html

它可以在.htaccess中使用但是因为.htaccess会在我建议将它放在httpd.conf或虚拟主机中的每个请求上进行解析。

答案 2 :(得分:0)

无论访问哪个URL,您都需要确保您的Web服务器提供“索引”页面。

使用Apache,你通常会使用重写规则,有一些讨论在这里为Ember设置http://discuss.emberjs.com/t/apache-rewrite-rule-for-html5-browser-history-url-bookmarkability/1013