是//或/ - /是一个有效的URL组件?

时间:2011-08-11 03:00:25

标签: http url

背景:我正在创建一个分层地理目录。我使用的地理数据库具有以下字段:我可以创建如下的URL: / ISO_country / 1st_admin_division / 2nd_admin_division / PLACE_NAME /邮编/

ISO_country,place_name和zipcode保证拥有数据。但第一和第二管理部门可能有也可能没有数据。

在美国我有/美国/纽约/拿骚县/希克斯维尔/ 51212 / 但在南非,我有/ ZA / [空白] / [空白] /比勒陀利亚/ 0030 /

如果我选择(丑陋)/ ZA ///比勒陀利亚/ 0030 /这是一个有效的网址吗?还有丑陋的/ ZA / - / - /比勒陀利亚/ 0030 /?

任何主流浏览器都能获得智能"并尝试消除这样的事情?

2 个答案:

答案 0 :(得分:2)

是的,两者都是完全有效的URI。请参阅RFC 2396

  

是否有任何主流浏览器变得“聪明”并试图消除这样的事情?

没有我见过的那么多。破折号(-)不是URI中的特殊字符,所以真的不需要关心那些。

答案 1 :(得分:1)

为什么不使用可选参数模型?这两个URL看起来都可行且易于解析:

/ZA/Pretoria/0030
/US/New-York/Nassau-County/Hicksville/51212/

而且,只是为了在工作中抛出一个泡菜:

/AU/Victoria/Melbourne/3000

如果你知道你的第一个,倒数第二个和最后一个项目总是有价值,为什么不选择第一个,然后向后解析你的URL令牌?

# rubyish pseudocode
tokens      = "/AU/Victoria/Melbourne/3000".split("/")
iso_country = tokens[0]

tokens.reverse!
tokens.drop_last_item!

zipcode          = tokens[0] # => 3000
place_name       = tokens[1] # => Melbourne
admin_division_2 = tokens[2] # => Victoria
admin_division_1 = tokens[3] # => nil / ""