关于PB地址中最后的“/”

2012-06-14 10:27:04 +08:00
 TONYHEAD
输入 http://www.v2ex.com/go/wordpress 是WordPress的节点,而在尾部加上"/"号却显示404 Not Found ( http://www.v2ex.com/go/wordpress/

在地址栏的尾部输入"/"纯属我的个人习惯,因为感觉URL会比较完整例如 http://www.abc.com/about/ ,而大部分网站在目录的后面加不加"/"显示的内容是一样,不知道 @Livid 是怎么看的呢?谢谢。
4682 次点击
所在节点    Project Babel
7 条回复
westy
2012-06-14 10:36:52 +08:00
个人见解:
1、example.com/something, 这是请求example.com根目录下的something这个资源, example.com/something/ 这是请求example.com根目录下的something文件夹(中的索引文件,比如index.html等web server定义的默认资源)。
2、以此来看,V2EX节点类似于文件夹,应该带上最终的/,而帖子更像一个资源(文件),不应该带最后的/
3、为了保证内容不重复,应当在末尾带/和不带的两个url间,选一个最终想用的,然后另一个用301跳转到默认的,以防两个url内容一样招致搜索引擎惩罚。
gonghao
2012-06-14 10:44:48 +08:00
我记得 Flask 里面的规则是,如果 @app.route('/something/') 那么 /something 会 301 到 /something/

反之,如果定义 @app.route('/something') 则 /something/ 会 404

ref: http://flask.pocoo.org/docs/quickstart/#routing

因此正如楼上所解释,/ 与 非/ 代表两种含义,不能简单的 301 跳转,Flask 的处理方法应该是比较合理的~
mckelvin
2012-06-14 12:29:50 +08:00
前两天也在思考这问题,豆瓣全带/的
Showfom
2012-06-14 12:57:40 +08:00
带/是目录,不带是文件
aggron
2012-06-14 13:08:04 +08:00
个人喜好吧。我比较习惯 带查询参数和文件后缀的不带/,比如?page=1,index.html之类的,其他的都带/
Livid
2012-06-14 14:14:13 +08:00
In my understanding, wordpress after /go/ means it is a parameter for /go/ , I don't think it's a folder.
evlos
2012-06-14 14:50:17 +08:00
PB3 用的是 Tornado,里面的路由规则大概是这样的:
handlers = [
(r"/", HomeHandler),
(r"/archive", ArchiveHandler),
(r"/feed", FeedHandler),
]
用 /archive 访问 ArchiveHandler,但是用 /archive 却是 404。

但是由于这个参数支持正则,所以如果改成 (r"/archive[/]*", ArchiveHandler), 就能同时匹配有斜杠和没有斜杠的。@Livid

@Showfom - =

@gonghao flask 也是这样?!我还以为是 tornado 的问题 - -

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/39448

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX