Ich verwende die Angular-UI-Router-Bibliothek und habe ein Problem mit URLs.
Ich habe folgenden Code:
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>
Dies funktioniert, aber wenn ich '#' aus dem <a>
Tag entferne, funktioniert dies nicht.
Wie kann ich das '#' Zeichen von der URL löschen?
javascript
angularjs
angular-ui-router
Niezborala
quelle
quelle
Antworten:
Sie müssen HTML5Mode aktivieren, wenn Sie ohne Hash-Tags navigieren möchten:
app.config(["$locationProvider", function($locationProvider) { $locationProvider.html5Mode(true); }]);
Sie müssen auch die Stamm-URL Ihrer App im Winkel angeben, indem
<head>
Sie der HTML-Datei den folgenden Code hinzufügen :<base href="/">
Beachten Sie, dass die Unterstützung des HTML5-Modus vom Browser abhängt. Für diejenigen, die die Verlaufs- API nicht unterstützen , greift Angular auf Hashbang zurück .
quelle
<base href="https://stackoverflow.com/">
Tag in den<head>
Abschnitt index.html zu setzenWenn Sie Angular 1.6+ verwenden , müssen Sie außerdem Folgendes
hashPrefix
aus der URL entfernen :appModule.config(['$locationProvider', function($locationProvider) { $locationProvider.hashPrefix(''); // by default '!' $locationProvider.html5Mode(true); }]);
Vergessen Sie nicht, auch die Basis zu wechseln:
<head> ... <base href="/"> </head>
quelle
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' }) }
in Ihrer index.php oder index.html in <head> -Tag einfügen
< base href="/" >
für CodeIgniter :
<base href=" < ?php echo base_url() ? >" >
quelle