vue项目使用history路由模式时,解决nginx项目刷新页面会报404错误
当vue项目使用history路由模式时,nginx项目刷新页面会报404错误。这时我们需要配置nginx:
location / { root /home/upload/hd; #项目目录 try_files $uri $uri/ @router;#需要指向下面的@router否则会出现vue的路由在nginx中刷新出现404 index /index.html; } 对应上面的@router,主要原因是路由的路径资源并不是一个真实的路径,所以无法找到具体的文件 因此需要rewrite到index.html中,然后交给路由在处理请求资源 location @router { rewrite ^.*$ /index.html last; }
当我们项目是一个域名,多个项目时(一般用于SAAS平台),如果用上面的方法就不行了,我们不可能为每一个目录去单独配置。
项目目录情况如下:
http://a/folder/vue1
http://a/folder/vue1
配置:
server { listen 80; server_name a; root /data/wwwroot/a; index index.html; location ~ /(\w+)/(\w+)/(\w+) { try_files $uri $uri/ /$1/$2/index.html; index /index.html; } access_log /data/logs/nginx/a_access.log; error_log /data/logs/nginx/a_error.log; }
宝塔完整版配置:
server { listen 80; server_name aihongxin.com; index index.html index.php index.htm default.php default.htm default.html; root /www/wwwroot/aihongxin.com; #SSL-START SSL相关配置,请勿删除或修改下一行带注释的404规则 #error_page 404/404.html; #SSL-END #ERROR-PAGE-START 错误页配置,可以注释、删除或修改 #error_page 404 /404.html; #error_page 502 /502.html; #ERROR-PAGE-END #PHP-INFO-START PHP引用配置,可以注释或修改 include enable-php-73.conf; #PHP-INFO-END #REWRITE-START URL重写规则引用,修改后将导致面板设置的伪静态规则失效 include /www/server/panel/vhost/rewrite/xiaokeapp.bangwotui.com.conf; #REWRITE-END #禁止访问的文件或目录 location ~ ^/(\.user.ini|\.htaccess|\.git|\.svn|\.project|LICENSE|README.md) { return 404; } #一键申请SSL证书验证目录相关设置 location ~ \.well-known{ allow all; } location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$ { expires 30d; error_log off; access_log /dev/null; } location ~ .*\.(js|css)?$ { expires 12h; error_log off; access_log /dev/null; } location ~ /(\w+)/(\w+)/(\w+)/(\w+)/(\w+)/(\w+)/(\w+) { try_files $uri $uri/ /$1/$2/$3/$4/$5/$6/index.html; index /index.html; } location ~ /(\w+)/(\w+)/(\w+) { try_files $uri $uri/ /$1/$2/index.html; index /index.html; } access_log /www/wwwlogs/xiaokeapp.bangwotui.com.log; error_log /www/wwwlogs/xiaokeapp.bangwotui.com.error.log; }