对于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;
}
}
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一起提供的URL。