对于angularjs中的干净网址,我必须使用$locationProvider.html5Mode(true);
,但当我刷新页面时,它会显示404。
我已经读过我需要配置服务器文件。
结构
/html -
/views -
home.html
about.html
contact.html
index.html
app.js
到目前为止我做了什么:
nginx.conf
server {
root /html/views;
index index.html;
location / {
try_files $uri $uri/ =404;
}
}
答案 0 :(得分:5)
Angular HTML5位置模式基本上利用了HTML5历史API来模拟"模拟"客户端中的URL更改。但是从服务器的角度来看,URL可能并不真实(不存在),因此无法在服务器上找到这些页面。通常有两种解决方案可以让服务器知道URL:
index.html
。对于您的情况,假设AngularJS的入口点为/index.html
。试试这个:
server {
root /html/views;
index index.html;
location / {
try_files $uri $uri/ /index.html =404;
}
}
之前的解决方案并不完美,因为它会任意测试每个请求。我们可以通过指定更详细的规则来避免不必要的URL查找:
server {
root /html/views;
index index.html;
rewrite "^/users" /index.html last;
rewrite "^/pages" /index.html last;
...
}
使用正则表达式匹配您要为Angular提供的网址。