Angle-ui-routerライブラリを使用していますが、URLに問題があります。
私は次のコードを持っています:
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>
これは機能しますが、<a>
タグから「#」を削除すると、機能しません。
URLから「#」記号を削除するにはどうすればよいですか?
ハッシュタグなしのナビゲーションが必要な場合は、HTML5Modeを有効にする必要があります。
app.config(["$locationProvider", function($locationProvider) {
$locationProvider.html5Mode(true);
}]);
次のコードをHTMLファイルの<head>
に追加して、アプリのルートURLをangularに伝える必要もあります。
<base href="/">
HTML5モードのサポートはブラウザに依存することに注意してください。 History APIをサポートしていない場合は、 Angularはhashbangにフォールバックします 。
Angular 1.6 +を使用している場合は、URLから hashPrefix
も削除する必要があります。
appModule.config(['$locationProvider', function($locationProvider) {
$locationProvider.hashPrefix(''); // by default '!'
$locationProvider.html5Mode(true);
}]);
ベースも変更することを忘れないでください:
<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'
})
}
index.phpまたはindex.htmlの<head>タグの挿入
< base href="/" >
CodeIgniterの場合:
<base href=" < ?php echo base_url() ? >" >