javascript - template - Cómo eliminar el signo ''#'' en las URL de angular-ui-router
ui router angularjs tutorial (3)
Debe habilitar HTML5Mode si desea navegar sin etiquetas hash:
app.config(["$locationProvider", function($locationProvider) {
$locationProvider.html5Mode(true);
}]);
También deberá indicarle a angular la URL raíz de su aplicación agregando el siguiente código al <head>
de su archivo HTML:
<base href="/">
Tenga en cuenta que la compatibilidad con el modo HTML5 depende del navegador. Para aquellos que no son compatibles con la API de historial, Angular recurrirá a hashbang .
Estoy usando la biblioteca angular-ui-router y tengo un problema con las URL.
Tengo el siguiente código:
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>
Esto funciona, pero cuando elimino ''#'' de la etiqueta <a>
esto no funciona.
¿Cómo puedo eliminar el signo ''#'' de la URL?
Si está utilizando Angular 1.6+ , también deberá eliminar el hashPrefix
de la URL:
appModule.config([''$locationProvider'', function($locationProvider) {
$locationProvider.hashPrefix(''''); // by default ''!''
$locationProvider.html5Mode(true);
}]);
No olvides cambiar la base también:
<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''
})
}
en su inserción de etiquetas index.php o index.html en <head>
< base href="/" >
para CodeIgniter :
<base href=" < ?php echo base_url() ? >" >