Angularjs 使用htm5Mode的stateProvider无法获取错误
我正在将stateProvider与$locationProvider.html5模式一起使用:Angularjs 使用htm5Mode的stateProvider无法获取错误,angularjs,connect-modrewrite,Angularjs,Connect Modrewrite,我正在将stateProvider与$locationProvider.html5模式一起使用: // Redirect any unmatched url $urlRouterProvider.otherwise("/cool"); $stateProvider // Dashboard .state('cool', { url: "/cool", templateUrl: "view
// Redirect any unmatched url
$urlRouterProvider.otherwise("/cool");
$stateProvider
// Dashboard
.state('cool', {
url: "/cool",
templateUrl: "views/cool.html"
});
$locationProvider.html5Mode(true);
但是当我http://localhost:8080/cool
我将获得无法获得/cool
错误<代码>http://localhost:8080/和http://localhost:8080/#/cool
工作正常
经过一些研究,我发现问题在于grunt connect。因此,我添加了modRoute以将所有url路由到index.html:
livereload: {
options: {
open: true,
middleware: function (connect) {
return [
modRewrite([
'!\\.\\w+$ /'
]),
但现在的问题是每个url都喜欢。首先,确保你的头脑中有“base”标记
<base href="/">
然后确保你的“/酷”-页面与你的“/”服务相同。如果没有,服务器将发回404(如预期的那样)。这必须适用于所有“子页面”
若要测试是否存在这种情况,请使用href创建指向“/cool”的链接,angular应使用
pushState
“内部”处理此问题,这与仅“浏览”该页面不同。这意味着,当您单击链接时,页面将按预期运行,但如果重新加载(CTRL+R),您将收到错误。首先,确保您的头部有“base”标记
<base href="/">
然后确保你的“/酷”-页面与你的“/”服务相同。如果没有,服务器将发回404(如预期的那样)。这必须适用于所有“子页面”
若要测试是否存在这种情况,请使用href创建指向“/cool”的链接,angular应使用
pushState
“内部”处理此问题,这与仅“浏览”该页面不同。这意味着,当您单击链接时,页面将按预期运行,但如果重新加载(CTRL+R),您将得到错误。如果您使用HTML5模式
,则必须在文档的标题中包含
标记。您可以将requireBase
设置为false,并使用HTML5模式
,而不使用
标记。请看一看,如果您使用HTML5模式
,您必须在文档的标题
部分中包含
标记。您可以将requireBase
设置为false,并使用HTML5模式
,而不使用
标记。请看一下,这很正常。。。angular处理url的散列部分,我认为为了能够使用html5模式,您还应该在服务器上更改一些设置您是否在头部添加了html基本标记?是的,我有标记这是正常的。。。angular处理url的散列部分,我认为为了能够使用html5模式,您还应该更改服务器上的一些设置您是否在头部添加了html基本标记?是的,我有标记