首先,我尝试了一些不同的解决方案来解决这个问题,但它们都没有为我工作。请参阅以下链接。
目前我无法将html5mode
与ui-router一起使用,因为它有Not Found
错误。它加载页面的唯一时间是第一次加载。每次刷新或尝试访问特定URL
时,都会出现此错误:
在此服务器上找不到请求的URL /欢迎。
目前,我正在AngularJS 1.5.0
使用ui-router 0.2.15
。 注意:我在apache服务器中使用的空白应用程序只有2个主要状态和1个带有子状态的主状态。
HTML:
<head>
<meta charset="UTF-8" />
<base href="/"></base>
</head>
的.config:
$locationProvider.html5Mode(true);
服务器重写:
<ifModule mod_rewrite.c>
RewriteEngine on
# Don't rewrite files or directories
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]
RewriteRule ^ index.html [L]
</ifModule>
我正在寻找解决此问题的很多主题/问题。所有这些都指出了3种可能的解决方案:
base
代码; base
标签(很难找到,但有一些); 我尝试了所有这些,遵循这些链接(以及更多):
和其他链接..但它们都不起作用,总是相同的结果。当我得到一个不同的错误时,就是这个错误:
内部服务器错误 服务器遇到内部错误或配置错误,无法完成您的请求。
请与admin @ localhost上的服务器管理员联系,告知他们此错误发生的时间以及您在此错误发生之前执行的操作。
服务器错误日志中可能提供了有关此错误的更多信息。
当我尝试使用这样的重写规则时:
<Directory />
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]
RewriteRule ^ index.html [L]
</Directory>
经过一些评论后,我设法让它发挥作用,但仅限于主要状态。当我处于子(嵌套)状态,并尝试刷新页面时,我收到此错误:
未捕获的SyntaxError:意外的标记&lt;
未捕获的ReferenceError:未定义角度
资源解释为样式表,但使用MIME类型text / html传输:
我的州的例子:
.state('contact', {
parent:'app',
url:'/Contact',
views: {
'app': {
templateUrl: 'app/contact.html',
}
}
})
.state('service', {
parent:'app',
abstract: true,
url:'/Service',
views: {
'app': {
templateUrl: 'app/service.html',
}
}
})
.state('service-teste', {
parent:'service',
url:'/Test',
views: {
'service': {
templateUrl: 'app/service_test.html',
}
}
})
当我处于service-test
状态并刷新页面时,我收到了错误。
答案 0 :(得分:1)
我解决此问题的方法是更改.htaccess
文件以及index.html
上的某些设置,更改某些路径。
的.htaccess
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index.html$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.html [L]
</IfModule>
请注意,必须在我的apache服务器上启用mod_rewrite。默认情况下,它已被禁用。
的index.html
我必须更改css文件的路径,并在开始时添加/
。像这样:
<link rel="stylesheet" type="text/css" href="/dist/css/main.min.css">
我像往常一样保留其他配置。
$locationProvider.html5Mode(true); //In the router config file
<base href="/"> //On the index.html just before closing the head tag