2012-02-04 2 views
7

Я пытаюсь определить некоторые маршруты с sammy.js здесь мой код:Sammy.js 404 на корневом пути

$.sammy("#main_content", function() 
{ 
    this.get("#!/about", function() 
    { 
     // Code 
    }); 

    this.get("#!/", function() 
    { 
     // Code 
    }); 
}).run(); 

Если я Гото www.mywebsite.com Я всегда получаю 404 ошибку. Я попытался поместить пустой маршрут, например, this.get("", function() {}); и, похоже, работает для предотвращения ошибки 404, но тогда ни одна из моих обычных ссылок на странице не работает. Как я могу это исправить?

+0

Если вы получаете Ошибка 404, идущая к корню вашего сайта, это звучит намного больше как проблема конфигурации сервера для меня. Знаете ли вы, что установлен для документа по умолчанию для серверов? В Apache это будет директива DirectoryIndex в вашем файле конфигурации httpd. В зависимости от сервера это может быть index.html или index.htm. Если одна из этих страниц не существует, то переход к корню сайта приведет к этой ошибке, так как сервер не узнает, какую страницу поднять. Если это не проблема, то я, возможно, совсем не понимаю эту проблему. –

+0

Не жалко, если я имел в виду ошибку 404, ее ошибка javascript вернулась из sammy.js. но я получаю только это, если у меня нет настройки маршрута для пустого маршрута, то есть this.get ("", function() {}); – Ryan

+0

Ах ... ладно. Ошибка 404 выглядит как ошибка, не найденная на странице, но, возможно, это не так. Возможно, стоит использовать Fiddler2 или Wireshark, чтобы получить пакетный захват того, что там происходит. Может быть, sammy.js пытается что-то вытащить, но я не знаю. Надеюсь, ты найдешь ответ там - похоже, что я не тот, у кого есть это. –

ответ

7

Для обработки первоначального запроса, который не содержит хэш, используйте пустой маршрут, упомянутый в нижней части списка маршрутов

/* Get Home view for empty hash URLs 
*/ 
this.get("", function() { 
    this.app.runRoute("get", "#Home"); 
}); 

Для того, чтобы обычных ссылок на вашем сайте, чтобы работать , то есть ссылки на бинарные файлы, AJAX запросы не обрабатывать, устанавливать свои якорные элементы с хэш маршрутом и параметры следующим образом (код использует синтаксис Razor)

<a href="@Url.Content("#Reporting/Excel/" + 
Model.Report.Type.ToString() + "/" + 
Model.Report.Audience.ToString() + "/" + 
Model.Report.UnitID.ToString() + "/" + 
Model.Report.DepartmentID.ToString())">Download Excel version</a> 

Теперь создать маршрут для Сэмх, чтобы отправить в фактический URL

/* Reporting Excel requests 
*/ 
this.get("#Reporting/Excel/:type/:audience/:unitID/:departmentID", function() { 
    location.assign("Report/Excel?" + 
     "Type=" + this.params.type + "&" + 
     "Audience=" + this.params.audience + "&" + 
     "UnitID=" + this.params.unitID + "&" + 
     "DepartmentID=" + this.params.departmentID 
    ); 
});