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) Я понятия не имею, как заставить его работать. И все же я не уверен, что это поможет.

Кто-нибудь с подобным опытом?


person user2113177    schedule 04.04.2015    source источник


Ответы (1)


Мне не повезло с $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);
}

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

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

person user2113177    schedule 04.04.2015