2015-04-04 1 views
0

В моем приложении AngularJS с ui.router параметр в URL-адресе интерпретируется как путь, если есть конечная косая черта.AngularJS с ui.router: параметр в URL-адресе интерпретируется как путь, если конечная косая черта

Что работает:

http://example.com/product/123 

Что не работает:

http://example.com/product/123/ 

В консоли я вижу, что AngularJS ищет все файлы в http://example.com/product/123/ а в http://example.com/product

Google говорит есть опция $urlMatcherFactory.strictMode(false) У меня нет идеи, как заставить ее работать. И все же я не уверен, поможет ли это.

Любой, у кого похожий опыт?

+0

http://stackoverflow.com/questions/24420578/handling-trailing-slashes-in-angularui-router –

ответ

0

Мне не повезло с $urlMatcherFactory.strictMode(false), и я думаю, что смесь псевдонимов vhost и условного htaccess RewriteBase вызвала некоторый конфликт, который я не смог выяснить в течение пяти часов.

Что я теперь сделал, и это хорошо работает:

На самом верху index.html я поставил этот скрипт:

var url = window.location.href; 
if (url.slice(-1) == '/') { 
    window.location.href = url.substring(0, url.length - 1); 
} 

Таким образом, в случае, если пользователь или браузер добавляет слэш , страница перезагружается без завершающей косой черты.

Это прекрасно для того, чтобы знать, все еще надеясь поймать преступника и исправить его когда-нибудь, а не плавать вокруг него.