网址最后的斜杠问题
问题
许多网站的访问在网址后面有时会带一个‘/’,有时没有,但经常带不带都访问的都是同一个网页;最近在用django的时候发现这个问题;现记录下来。
表现
在django的框架下,访问路由地址的时候,如果你的路由地址配置为如下这种
1 | url(r'^user/$', 'get_user_info') |
框架默认会将不带斜杠的路由重定向到带斜杠的路由下,这是访问***.com/user和***.com/user/都可以;
如果配置为
1 | url(r'^user$', 'get_user_info') |
这在访问***.com/user时没有问题,访问***.com/user/时就会报404错误。
注意的是,这种重定向会被浏览器记住,当你改变配置为不带斜杠的时候,继续访问浏览器会被重定向到带斜杠的地址,而发生404错误;
原因
django的配置文件settings.py中,默认的设置(该配置未显式写出)为Ture;
1 | APPEND_SLASH = True |
指示不带斜杠的情况下会重定向到带斜杠的地址;如果设置为False,就不会重定向;