2016-08-31 3 views
1

У меня есть приложение EmberJS с использованием Coffeescript и Ember 2.7.1.Ember manual url change не загружается страница

Я перенаправляю / на номер /student.

Когда я открываю приложение, скажем, на www.something.com/~somebody/dist/ (да, мне нужна часть ~somebody/dist), он идет до www.something.com/~somebody/dist/student, как и ожидалось.

У меня также есть другие страницы, например /settings. Если я использую помощник link-to для перехода на страницу настроек, он работает. Когда я вручную меняю URL-адрес от www.something.com/~somebody/dist/student до www.something.com/~somebody/dist/settings, он не загружает страницу.

Я получаю Не удалось загрузить ресурс: сервер ответил статусом 404 (не найдено).

Любая идея, как это исправить?

Мои router.coffee файл:

`import Ember from 'ember'` 
`import config from './config/environment'` 

Router = Ember.Router.extend 
    location: config.locationType, 
    rootURL: config.rootURL 

Router.map -> 
    @route 'student' 
    @route 'settings' 
    @route 'statistics' 
    @route 'directory' 

`export default Router` 

Мои маршруты/index.coffee файл:

`import Ember from 'ember'` 

IndexRoute = Ember.Route.extend 
    beforeModel: -> 
     @transitionTo('student') 

`export default IndexRoute` 

Мои маршруты/settings.coffee файл:

`import Ember from 'ember'` 

SettingsRoute = Ember.Route.extend() 

`export default SettingsRoute` 

Мои маршрутов/student.coffee файла:

`import Ember from 'ember'` 

StudentRoute = Ember.Route.extend() 

`export default StudentRoute` 

Моего environment.js файла:

/* jshint node: true */ 

module.exports = function(environment) { 
    var ENV = { 
    modulePrefix: 'something-frontend', 
    environment: environment, 
    rootURL: '/', 
    locationType: 'auto', 
    EmberENV: { 
     FEATURES: { 
     // Here you can enable experimental features on an ember canary build 
     // e.g. 'with-controller': true 
     } 
    }, 

    APP: { 
     // Here you can pass flags/options to your application instance 
     // when it is created 
    } 
    }; 

    if (environment === 'development') { 
    // ENV.APP.LOG_RESOLVER = true; 
    // ENV.APP.LOG_ACTIVE_GENERATION = true; 
    // ENV.APP.LOG_TRANSITIONS = true; 
    // ENV.APP.LOG_TRANSITIONS_INTERNAL = true; 
    // ENV.APP.LOG_VIEW_LOOKUPS = true; 
    } 

    if (environment === 'test') { 
    // Testem prefers this... 
    ENV.baseURL = '/'; 
    ENV.locationType = 'none'; 

    // keep test console output quieter 
    ENV.APP.LOG_ACTIVE_GENERATION = false; 
    ENV.APP.LOG_VIEW_LOOKUPS = false; 

    ENV.APP.rootElement = '#ember-testing'; 
    } 

    if (environment === 'production') { 
     ENV.location = 'hash'; 
     ENV.rootURL = '/~somebody/dist' 
    } 

    return ENV; 
}; 

ответ

0

Вы должны иметь маршрут настройки, чтобы позволить вашему приложение переходит к. Убедитесь, что у вас есть файл маршрутов/settings.js.

+0

У меня есть этот файл. У меня есть эти файлы для всех моих маршрутов. Я редактировал свой вопрос, чтобы сделать его более понятным. – lordblendi

0

Это не проблема с ember, а скорее настройка http-сервера. Вы должны настроить ваш сервер http для перенаправления всех запросов, не соответствующих файлу, на index.html.

В Nginx можно использовать следующее:

location /~user/dist/ { 
    try_files $uri $uri/ /index.html?/$request_uri; 
} 
+0

Спасибо, но мне не пришлось пробовать это в конце, потому что я нашел «обходной путь» в Ember. :) – lordblendi