在索引以外的路由上刷新Emberjs应用程序会产生404错误

mccptt67  于 2022-09-28  发布在  其他
关注(0)|答案(4)|浏览(112)

我有一个使用Ember-App-Kit(EAK)提供的初学者工具包的小ember应用程序。我已经在构建生产版后将dist-dir上传到AWS EC2示例。
我目前面临的问题:
1.当我点击根url时,我可以看到索引页面,同时从索引页面中的链接转到任何其他路径,它工作正常,让我转到该页面。当我尝试刷新该页面时,就会出现问题。
首先,我认为这是由于权限错误,但这只是一个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]
jogvjijk

jogvjijk1#

实际上,我不知道如何使用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

ut6juiuv

ut6juiuv2#

this post中所述,使用FallbackRessource是完成此任务的最简单方法:

FallbackResource /index.html

它可以在.htaccess中使用,但由于.htaccess对每个请求都进行了解析,所以我建议将其放在httpd中。conf或虚拟主机。

c3frrgcw

c3frrgcw3#

无论访问什么URL,您都需要确保web服务器为您的“索引”页面提供服务。
对于Apache,您通常会使用重写规则,这里有一些关于为Ember设置重写规则的讨论http://discuss.emberjs.com/t/apache-rewrite-rule-for-html5-browser-history-url-bookmarkability/1013

iyzzxitl

iyzzxitl4#

您需要在环境中设置locationType: 'hash'。js在构建之前。

相关问题