2015-10-26 3 views
0

В моем приложении Ember, если я разрабатываю локально, я могу напрямую перейти на страницу, перейдя по адресу http://localhost:4200/some/page. Я также могу перейти на эту страницу в самом приложении.Приложение Ember отображает пустую страницу при вводе определенного URL-адреса

Однако, после того, как мое приложение развертывается, и я иду к https://dev.myapp.com я в состоянии перемещаться по всему сайту только штраф, но если я пытаюсь перейти к URL непосредственно (например, https://dev.myapp.com/some/page) нет ничего, вынесенное в браузере а DOM полностью пуст. Но если я войду в https://dev.myapp.com/ обратно в браузер, я снова смогу начать навигацию к приложению.

Будет ли это связано с тем, как я создаю или развертываю свое приложение, или это то, что я, возможно, неправильно настроил в самом приложении Ember?

Я также должен добавить, что я использую Nginx для развертывания моего приложения.

ответ

0

Когда вы работаете с history based locations, Ember изменяет URL-адрес браузера во время навигации, но фактический запрос GET документа не поступает на веб-сервер. Когда вы обновляете и запрашиваете конкретный маршрут напрямую, веб-сервер пытается обслуживать соответствующий файл, который терпит неудачу, потому что файл не существует.

Вам нужно будет сообщить веб-серверу, что он всегда будет обслуживать index.html независимо от того, какой файл запрашивается, а затем разрешить Ember делать магию. Детальная конфигурация зависит от вашего веб-сервера.

Это работает для меня на Apache 2:

<IfModule mod_rewrite.c> 
    RewriteEngine On 
    RewriteBase/
    RewriteRule ^index\.html$ - [L] 
    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteCond %{REQUEST_FILENAME} !-d 
    RewriteRule . /index.html [L] 
</IfModule> 

старый комплект документации Ember App имеет more examples в нижней части страницы.

+0

Будет ли это похоже на использование «index index.html index.htm;» с nginx? Это с сайта ember-cli – Scott

+0

Или это будет строка «try_files $ uri $ uri//index.html?/$request_uri;»? – Scott

+0

Я не знаком с nginx, но я считаю, что это действительно самая важная строка. Он определяет порядок, в котором к конкретному ресурсу пытается получить доступ, см. [Соответствующую документацию nginx] (http://nginx.org/en/docs/http/ngx_http_core_module.html#try_files) для получения дополнительной информации. Если он не может быть доступен как фактический, существующий файл или каталог, он возвращается к index.html, где Ember делает магию, анализирует URI и переходит к соответствующему маршруту. – digitalbreed

Смежные вопросы