上海市区大多数的路名都以“路”为通名,以中国的行政省市地名为道路的专名。这种地名规律也是从租界开始形成的。
上海开埠之前只是松江府下面一个小县城,周长约九华里的城墙把上海县城分为城里城外。和所有江南小城一样,上海县城的路拥挤狭小,弯曲混乱。大的叫街,小的称为巷或是弄(这些现象在今天原南市区孔庙、城隍庙一带比较显著)。路名也没有什么规律,有的取附近的大户人家,命名为“×家街”;有的以附近的建筑,命名为“会馆弄”,“三牌楼街”等;有的以附近的集市,命名为“蔑竹弄”,“面筋弄”,“咸瓜街”等。
1843年上海开埠后,租界开路依照其本国的道路样式,方方正正,宛如棋盘。大家看到美国现在的街区也是如豆腐干似的,称为“block”,本意也就是方块。在租界当局还没有给这些如棋盘的街道命名的时候,沪上民众也有统称之为“棋盘街”的,大致范围是今九江路,江西路一带。租界命名完这些道路后,还有人称今河南中路叫“老棋盘街”。今天,河南中路广东路南边还有两条东西棋盘街沿用至今,就是那时位于老棋盘街之东之西而得名的。
刚开始,租界当局对道路的命名也是带随意性的,1848年英租界扩张成功,其北界由今北京东路扩张到苏州河南岸,西界由河南中路扩展到今西藏中路,面积基本扩张了三倍半。同时,租界的道路数量和长度也成倍增加。另外,1860年为防止太平天国对上海的威胁,英美法租界曾计划合并,1863年虽然法租界退出,但是英美租界正式合并,改称“外国人租界(Foreign Settlement 或North of Yang-King-Pang Greek Foreign Settlement)”亦称“公共租界”。由于是原来英美租界合并的,英美两国皆认为自己有命名权,所以任何一种偏颇的命名方案都会招到对方的强烈反对,道路命名一度陷入僵局。经几次协商,双方规定了一个对大家都无损害的方案,即以中国的城市地名作为租界内(主要是原英租界内)东西方向的道路名称,以中国的省份的名称作为租界内南北向道路的名称。所以,苏州河南岸涌现了大批以中国城市和省份名称命名的道路,这批道路名称基本沿用至今。这其中有一个特例,就是东西向的广东路,照规律应是一个城市的名城,实际上当时命名的是Canton Road,由于鸦片战争以前,中国只允许广州一地可以对外进行贸易活动,所以Canton既可以指广州也可以指广东,而且多指广州。但是由于Canton的发音更接近于广东,所以国人就译为广东路。同时,租界工部局又拟订了一个对原虹口美租界的道路命名原则,即基本以上海周边的城市命名,这就是今天的闵行路,青浦路,昆山路,乍浦路等。
按照英文惯例,较大的道路称为ROAD,较小的称为“LANE”,于是,上海市民就以相近发音的“路”和“弄”来对译。这样大路称“路”,小路称“弄”的命名规律也就沿用至今。
实际上细看这些道路名称就会发现,这些地名基本都是英美在中国的势力范围。但是在今黄浦区近西藏中路的租界核心区域,有两条不起眼的马路“牛庄路”和“芝罘路”。这两个地方当时都不算什么大地方,怎么也会进入路名呢?
原来,1860年《北京条约》签订以后,清廷允许列强在北京设立公使馆,并列天津为开放口岸。列强均想在北方扩张势力。英国领事密迪乐与清廷盛京将军玉明委派的牛庄防守尉毓昌面议后,划营口旧关东的辽河东弓湾作为外轮停靠的地方,并立约永租南岸大片滩涂作为租界。实际上这片地根本没法居住,不久就塌入辽河,但是英国为纪念牛庄被辟为租界,也以之命名了上海的道路。同样,1860年英国驻登州领事马礼逊根据中英《天津条约》中增开登州为通商口岸的规定,着手登州的开埠。但是,实际勘察后发现登州根本不适合船只停靠,反倒是登州所辖烟台有一个芝罘湾是开展贸易的好地方,于是又重新要求改登州为芝罘,并命名了这条马路。
1900年起,公共租界又越界筑路,在今杨树浦地区大兴土木。同时又拟定以英属印度南洋一带的城市命名这些马路,到1915年已经有了孟买路(今河间路),加尔各答路(今杭州路),山大根路(今定海路),马拉斯路(今平凉路),甘达赫路(今临青路),卡拉路(今眉州路)等30条路名。由于这些路名拗口难记,所以1920年工部局宣布将上述路名改成了现在的路名。
闸北是华界人士为抵抗公共租界的扩张和振兴华界而新兴建设的一个商埠。1912年民国政府成立后,对这里原有地名进行了调整,使之带有了强烈的“革命”色彩。比如中华民国成立时的五色国旗象征汉、满、蒙、回、藏团结,闸北就出现了“汉中路”、“满州路(1946年为纪念在8·13凇沪抗战中坚守四行仓库后被叛徒所害的谢晋元将军,改名晋元路”、“蒙古路”、“新疆路”、“西藏路(今西藏北路)”。此外还出现了“大统路”、“光复路”、“国庆路”、“恒丰路”、“长安路”、“新民路”等带辛亥色彩的路名。
1943年汪伪政府成立后,为显示是中国人的政权,将租界中以外国人物命名的所有道路都按照中国行政区域城市的名字命名,但是其中有两条路是特例,一条是东京路,一条是海防路。实际上这两条路都是当时安南(就是今越南的地名),但是由于东京与日本首都重名,傀儡政府竟不敢擅动,为遮耳目,连带海防路也没有改。抗战胜利后,国民党政府接收大上海,除将东京路、共荣路等路名改过之外,并无大的动作。这些路名基本上沿用至今。
另外,由于公共租界都是以外滩为原点筑路的,所以上海市中心的路牌大致上是以靠近外滩一侧为小号,远离外滩一侧为大号的。外滩(中山东一路)上的门牌号则基本是连号的,不象其他街道一样分单号双号(当然,事实上也没法分)。