J'utilise la bibliothèque angular-ui-router et j'ai un problème avec les URL.
J'ai le code suivant:
app.js:
app.config(function ($stateProvider, $urlRouterProvider) {
$stateProvider
.state('state', {
url: '/state',
templateUrl: 'templates/state.html',
onEnter: function () {
/*... code ...*/
}
})});
index.html:
<a href="#/state">STATE</a>
Cela fonctionne, mais lorsque je supprime '#' de la <a>
tag cela ne fonctionne pas.
Comment puis-je supprimer le signe '#' de l'URL?
Vous devez activer HTML5Mode si vous souhaitez une navigation sans balises de hachage:
app.config(["$locationProvider", function($locationProvider) {
$locationProvider.html5Mode(true);
}]);
Vous devrez également indiquer à angular l'URL racine de votre application en ajoutant le code suivant au <head>
de votre fichier HTML:
<base href="/">
Sachez que la prise en charge du mode HTML5 dépend du navigateur. Pour ceux qui ne prennent pas en charge l’API d’historique, Angular se repliera sur hashbang .
Si vous utilisez Angular 1.6 + , vous devrez également supprimer le hashPrefix
de l'URL:
appModule.config(['$locationProvider', function($locationProvider) {
$locationProvider.hashPrefix(''); // by default '!'
$locationProvider.html5Mode(true);
}]);
N'oubliez pas de changer également de base:
<head>
...
<base href="/">
</head>
yourApp.config(function ($stateProvider, $urlRouterProvider,$locationProvider) {
$urlRouterProvider.otherwise('/home');
//add this line in your routing code
$locationProvider.html5Mode(true);
$stateProvider.state('web.home', {
url: '/home',
templateUrl: 'pages/home.html',
controller: 'mainController'
})
}
dans votre index.php ou index.html dans la balise <head>
< base href="/" >
pour CodeIgniter:
<base href=" < ?php echo base_url() ? >" >