2016-01-30 79 views
1

在anglarjs中,我使用$ routeProvider來路由各種URL。想要從URLS中刪除#,但嘗試所有已建立的方式後都失敗(將main.php中的<base>選項與.htaccess一起設置爲html5爲true)。使用yii2作爲服務器從angularjs中的URL中刪除#

我使用yii2框架中的views/layouts/main.php作爲實例化ng-app的標準頁面。

你能告訴我應該遵循什麼樣的步驟?

當我運行沒有哈希的URL,則返回404,因爲它無法找到路徑,它用來查找後#

+0

請提供更多的細節你做了什麼準確。與提供者的配置一樣,htaccess的內容。通常這是有效的:https://scotch.io/quick-tips/pretty-urls-in-angularjs-removing-the-hashtag –

回答

1

您需要將html5mode設置爲true。在此處查看詳細信息https://docs.angularjs.org/guide/$location

另外,如果要防止404錯誤,則需要在HTML中設置base屬性。看到這裏的答案#1 Issue with html5Mode in angularjs

+0

這是一個不完整的答案,沒有提到它需要服務器端配置才能工作 – charlietfl

+0

第一個鏈接解釋html5mode和整個$位置,包括詳細的服務器端配置。爲了簡潔起見,我並沒有在這裏解釋,因爲原來的問題只是被問到#。如果有跟進,我會在我的答案中包括。 – Bikas

0

您需要配置$ locationProvider並設置html5Mode爲true:

angular.module('phonecat', []). 
    config(['$routeProvider', '$locationProvider', function($routeProvider, $locationProvider) { 
    $routeProvider. 
     when('/phones', {templateUrl: 'partials/phone-list.html', controller: PhoneListCtrl}). 
     when('/phones/:phoneId', {templateUrl: 'partials/phone-detail.html', controller: PhoneDetailCtrl}). 
     otherwise({redirectTo: '/phones'}); 

    $locationProvider.html5Mode(true); 

    }]); 

您可以在此看到link細節。

此代碼適用於我,我希望它也適用於您。

相關問題