angular-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);
}]);
또한 <head>
HTML 파일에 다음 코드를 추가하여 앱의 루트 URL을 angular에 알려야 합니다.
<base href="/">
HTML5 모드 지원은 브라우저에 따라 다릅니다. History API를 지원하지 않는 사람들을 위해 Angular는 hashbang으로 대체됩니다 .
답변
Angular 1.6+를 사용 hashPrefix
하는 경우 URL 에서을 제거해야합니다 .
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() ? >" >