(1)nginx需要这样配置,才能访问前端路由
try_files $uri $uri/ /index.html;
意思哈是访问xxx的时候,不是导航到具体地址,而是交给index.html,也就是前端页面自己去处理
(2)配置跨域头,给http来源
这样才能带cookie,*带不了
add_header 'Access-Control-Allow-Origin' $http_origin;
add_header 'Access-Control-Allow-Credentials' 'true';
(3)把配好的 /qwq/后面的/强制删掉,则是
rewrite ^/(.*)/$ /$1 permanent;
参考 NGINX 添加/去除 URL 末尾斜杠 - 清北博客
如何去掉末尾的 /
NGINX 添加/去除 URL 末尾斜杠
1、添加
Nginx
1 | rewrite ^(.*[^/])$ $1/ permanent; |
可能导致的问题:对图片等静态资源加上/
导致404
解决方法:改成
Nginx
1 2 3 | if ($uri !~ ".*\.(gif|jpg|jpeg|png|bmp|swf|js|css)") { rewrite ^(.*[^/])$ $1/ permanent; } |
可能导致的问题:
和其他伪静态规则冲突,导致重定向到/index.php/...
目前无解,可以尝试修改放置此行代码的位置。
2、去除
Nginx
1 | rewrite ^/(.*)/$ /$1 permanent; |
3、注意事项
NGINX会默认添加斜杠,一般情况下不要乱改。
可能的应用场景:
程序支持带斜杠和不带斜杠,例如:
/thread/1
/thread/1/
都可以访问,那么搜索引擎大概率两个都会索引,导致分权。
那么,最好是把其中一种301
重定向到默认的那一种。
最后,注意不要用
Nginx
1 2 3 | location { ... } |
括起来,可能会导致失效,和NGINX伪静态规则的优先级有关,这里不多赘述。
参考
Nginx重写规则指南
http://www.ttlsa.com/nginx/nginx-rewriting-rules-guide/