Django和Flask对于URL尾斜杠(back slash)的处理
最近在看Flask,其中提到了对于URL尾斜杠的处理。感觉算是一个需要注意的地方吧,就和Django的处理方式来进行一个简单的对比。
首先说下什么是尾斜杠。
http://www.baidu.com/ # 有尾斜杠 http://www.baidu.com # 无尾斜杠
清楚了吧。
那么为什么我们要关注尾斜杠这个问题呢?这个要从Django和Flask对于URL的设置说起。
Django和Flask设置URL方式:
r'^admin/$' # Django 'admin/' # flask
可见两者都是基于字符串的匹配。所以问题就出来了:
如果我设置了一个形如'admin'的URL,那么当用户输入'admin/'的时候应不应该匹配呢?
或者换种说法:
如果我设置了一个形如'admin/的'URL,那么当用户输入'admin'的时候应不应该匹配呢?
这就是尾斜杠问题。
下面我们看看Django和Flask是如何处理的。
Django中的处理方法是提供了一个设置项,APPEND_SLASH,这个设置的默认值是True。当APPEND_SLASH为True的时候,如果一个URL没有匹配成功,那么Django会在这个URL尾部加上一个'/'并重新redirect回来。如果设置为False,那没有匹配成功的时候就什么都不会做。
需要注意的是,由于采用了redirect的方式,所以POST数据可能会丢失。
Flask默认行为和Django一样,只不过文档中并没有说明是不是采用redirect方法,如果不是的话,那么数据就没有丢失的风险了。
所以现在我们可以来回答上面的两个问题了:
如果设置了'admin',那么只有'admin'会匹配,'admin/'不会匹配。
如果设置了'admin/',那么'admin'和'admin/'都会匹配。
Django和Flask对于URL尾斜杠(back slash)的处理的更多相关文章
- ASP.NET MVC中URL末尾斜杠的实现
在网站的SEO优化中,通常都会涉及到URL结尾斜杠的问题. http://blog.sina.com.cn/s/blog_828e7ce40100srj1.html http://www.dengyo ...
- nginx 重写URL尾部斜杠
1. 在URL结尾添加斜杠 在虚拟主机中这么添加一条改写规则: rewrite ^(.*[^/])$ $1/ permanent;或者rewrite ^([/\w-_]*[^/])$ $1/ perm ...
- URL中斜杠/和反斜杠\的区别小结
Unix使用斜杆/ 作为路径分隔符,而web应用最新使用在Unix系统上面,所以目前所有的网络地址都采用 斜杆/ 作为分隔符. Windows由于使用 斜杆/ 作为DOS命令提示符的参数标志了,为了不 ...
- json_encode让URL内容斜杠/不转义
同事在开发接口的时候根据接口提示要求传参一个字符串json,该json格式中有URL数组,按照json_encode编码后总发现 http://变成了 http:\/\/ .URL的斜杠自动的被转义 ...
- django(二)视图和URL配置
创建一份视图: 在上一节,使用django-admin.py startproject制作的mysite文件夹中,创建一个叫做views.py的空文件.这个Python模块健柏寒这一章的视图. vie ...
- url末尾的斜杠作用探秘
今天突然好奇,想区分www.abc.com/efg 和www.abc.com/efg/这两个网址的区别.即分析一下url末尾加个斜杠是否有特殊的效果. 找到网上的介绍: 当Web服务器接收到对某个末尾 ...
- URL后面带\斜杠对SEO的影响
例如以下的两种URL书写方式: 1.www.baidu.com 2.www.baidu.com\ 这两种书写方式的区别到底在哪里呢?哪一个的速度更快呢?可能对于我们大多数人来说会觉得两个速度一样,因为 ...
- nginx url自动加斜杠的问题
nginx url自动加斜杠问题及301重定向 时间:2016-02-04 15:14:28来源:网络 导读:nginx url自动加斜杠问题及301重定向,URL指向一个目录并且在最后没有包含斜杠, ...
- URL结尾反斜杠对SEO的影响(转)
开始纠结网站URL加不加反斜杠对SEO的影响,还有些人把这个反斜杠说的神乎其神,我擦,本人手贱百度了一下,果然“博大精深”,敬请参考! 从百度站长平台的外链分析里,我们可以看到,一些目录结构的URL, ...
随机推荐
- MySQL 解压包 安装
1.解压 2.配置mysql bin的环境变量 3.配置my-defalue.ini 配置文件 或自己建立一个my.ini文件 [mysqld] basedir=F:\mysql\mysql-5.6. ...
- match() vs search()
match() 函数只检查 RE 是否在字符串开始处匹配,而 search() 则是扫描整个字符串.记住这一区别是重要的.记住,match() 只报告一次成功的匹配,它将从 0 处开始:如果匹配不是从 ...
- Linux下解压文件
unzip + 文件名 (解压.zip文件到当前目录) gunzip –c filename.gz > filename (解压.gz文件到当前目录,保留原文件) tar -zxvf - ...
- javaweb project create
软件分享 myeclipse 10 链接:http://pan.baidu.com/s/1i3tUFpb 密码:qnyo 新建一个web project 找到web.xml 修改这里的index.ph ...
- WinDbg 蓝屏dump分析教程
一.WinDbg是什么?它能做什么? WinDbg是在windows平台下,强大的用户态和内核态调试工具.它能够通过dmp文件轻松的定位到问题根源,可用于分析蓝屏.程序崩溃(IE崩溃)原因,是我们日常 ...
- [转]MYSQL高可用方案探究(总结)
前言 http://blog.chinaunix.net/uid-20639775-id-3337432.htmlLvs+Keepalived+Mysql单点写入主主同步高可用方案 http://bl ...
- AngularJS-UI-Router
涉及知识点: $stateProvider,$urlRouteProvider ui-href $stateParams,$state 1.如何引用依赖angular-ui-router angula ...
- Microsoft.Office.Interop.Excel操作Excel文件时出现的问题及解决方案
问题描述: Microsoft.Office.Interop.Excel.Worksheet 打不开文件 Microsoft Office Excel 不能访问文件"a.xls". ...
- c++读书笔记, 零散点滴的收获
1. 字节长度: short <= int <= long <= long long 2. wchar_t,最大扩展字符集合:char16_t.char32_t,unocide字符集 ...
- 【仿真】Lattice_Diamond_调用Modelsim_仿真
仿真前的准备工作:在modelsim中添加lattice仿真库:1.去除modelsim安装目录下modelsim.ini的只读属性.2.打开modelsim,更改目录File>Change d ...