nginx URL 斜杠问题

问题

今天公司新上的一个前端应用遇到一个问题,那就是在微信登录界面扫码登录之后,微信回调给我们的地址多加了一个斜杠;

错误的地址:http://a.xxlaila.com/wx.html/?code=011amZet0h1IUf19Fvht0jg4ft0amZeN
正确的地址:http://a.xxlaila.com/wx.html?code=011amZet0h1IUf19Fvht0jg4ft0amZeN

在nginx上配置需要吧这个斜杠删除掉。用户才能正常的访问;

实例

在配置文件里面增加如下配置项

  • 删除URL结尾的斜杠

rewrite ^/(.)/$ /$1 permanent;*

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
server {
listen 80;
charset utf-8;
server_name a.xxlaila.com;
rewrite ^/(.*)/$ /$1 permanent;
index index.html index.htm index.jsp index.php;
root /opt/webapps/a.xxlaila.com;

location ~* / {
try_files $uri $uri/ /index.html;
}


access_log /var/log/nginx/a.xxlaila.com.access.log main;
# error_log /var/log/nginx/a.xxlaila.com.error.log debug;
}
  • 在URL结尾添加斜杠
    在配置文件增加如下配置项目

rewrite ^(.[^/])$ $1/ permanent;*

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
server {
listen 80;
charset utf-8;
server_name a.xxlaila.com;
rewrite ^(.*[^/])$ $1/ permanent;
index index.html index.htm index.jsp index.php;
root /opt/webapps/a.xxlaila.com;

location ~* / {
try_files $uri $uri/ /index.html;
}


access_log /var/log/nginx/a.xxlaila.com.access.log main;
# error_log /var/log/nginx/a.xxlaila.com.error.log debug;
}

问题2

在浏览器访问某一个url/页面的时候,通常有时候带有.html的一个扩展名,现需求是带.html和不带.html都可以访问

增加如下配置文件

1
2
3
4
if (!-e $request_filename) {    
rewrite ^(.*)$ /$1.html last;
break;
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
server {
listen 80;
charset utf-8;
server_name a.xxlaila.com;
rewrite ^/(.*)/$ /$1 permanent;
index index.html index.htm index.jsp index.php;
root /opt/webapps/a.xxlaila.com;

location ~* / {
if (!-e $request_filename) {
rewrite ^(.*)$ /$1.html last;
break;
}
try_files $uri $uri/ /index.html;
}

access_log /var/log/nginx/a.xxlaila.com.access.log main;
# error_log /var/log/nginx/a.xxlaila.com.error.log debug;
}
坚持原创技术分享,您的支持将鼓励我继续创作!
0%